diff --git a/chiasma.cabal b/chiasma.cabal
--- a/chiasma.cabal
+++ b/chiasma.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.35.2.
+-- This file has been generated from package.yaml by hpack version 0.38.2.
 --
 -- see: https://github.com/sol/hpack
 
 name:           chiasma
-version:        0.10.1.0
+version:        0.10.2.0
 synopsis:       A tmux client for Polysemy
 description:    See https://hackage.haskell.org/package/chiasma/docs/Chiasma.html
 category:       Terminal
@@ -13,7 +13,7 @@
 bug-reports:    https://github.com/tek/chiasma/issues
 author:         Torsten Schmits
 maintainer:     hackage@tryp.io
-copyright:      2023 Torsten Schmits
+copyright:      2025 Torsten Schmits
 license:        BSD-2-Clause-Patent
 license-file:   LICENSE
 build-type:     Simple
@@ -143,9 +143,12 @@
       GADTs
       LambdaCase
       LiberalTypeSynonyms
+      MonadComprehensions
       MultiWayIf
+      NoFieldSelectors
       OverloadedLabels
       OverloadedLists
+      OverloadedRecordDot
       OverloadedStrings
       PackageImports
       PartialTypeSignatures
@@ -161,36 +164,34 @@
       UndecidableInstances
       UnicodeSyntax
       ViewPatterns
-      OverloadedRecordDot
-      NoFieldSelectors
   ghc-options: -fplugin=Polysemy.Plugin -Wall -Widentities -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Wredundant-constraints -Wunused-type-patterns -Wunused-packages
   build-depends:
-      attoparsec >=0.13
-    , base ==4.*
+      attoparsec
+    , base <5
     , bytestring
-    , composition >=1.0
+    , composition
     , containers
     , exon
     , extra
     , first-class-families
-    , lens >=4
+    , lens
     , parsec
-    , parsers >=0.12
+    , parsers
     , path
     , polysemy
-    , polysemy-conc >=0.9
-    , polysemy-log >=0.7
+    , polysemy-conc
+    , polysemy-log
     , polysemy-plugin
-    , polysemy-process >=0.9
-    , polysemy-time >=0.5
-    , prelate >=0.6 && <0.8
-    , prettyprinter >=1.6
-    , prettyprinter-ansi-terminal >=1.1
-    , random >=1.1
+    , polysemy-process
+    , polysemy-time
+    , prelate
+    , prettyprinter
+    , prettyprinter-ansi-terminal
+    , random
     , text
     , transformers
-    , typed-process >=0.2
-    , uuid >=1.3
+    , typed-process
+    , uuid
   mixins:
       base hiding (Prelude)
     , prelate (Prelate as Prelude)
diff --git a/lib/Chiasma/Command/Pane.hs b/lib/Chiasma/Command/Pane.hs
--- a/lib/Chiasma/Command/Pane.hs
+++ b/lib/Chiasma/Command/Pane.hs
@@ -1,4 +1,3 @@
-{-# OPTIONS_GHC -Wno-ambiguous-fields #-}
 module Chiasma.Command.Pane where
 
 import Prelude hiding (output)
@@ -6,22 +5,20 @@
 import qualified Chiasma.Codec.Data.Pane as Codec (Pane)
 import qualified Chiasma.Codec.Data.PaneMode as Codec (PaneMode (PaneMode))
 import Chiasma.Data.Axis (Axis)
-import Chiasma.Data.CapturePaneParams (CaptureOutput (Stdout), escapeSequences, output, target)
-import Chiasma.Data.CopyModeParams (target)
-import Chiasma.Data.KillPaneParams (target)
+import Chiasma.Data.CapturePaneParams (CaptureOutput (Stdout), CapturePaneParams (..))
+import qualified Chiasma.Data.CopyModeParams as CopyModeParams
+import qualified Chiasma.Data.KillPaneParams as KillPaneParams
 import qualified Chiasma.Data.PaneSelection as PaneSelection
 import qualified Chiasma.Data.Panes as Panes
 import Chiasma.Data.Panes (TmuxPanes)
-import Chiasma.Data.PipePaneParams (command, target)
-import Chiasma.Data.ResizePaneParams (ResizeAbsolute (ResizeAbsolute), absolute, target)
-import Chiasma.Data.SelectParams (target)
+import Chiasma.Data.PipePaneParams (PipePaneParams (..))
+import Chiasma.Data.ResizePaneParams (ResizeAbsolute (ResizeAbsolute), ResizePaneParams (..))
+import qualified Chiasma.Data.SelectParams as SelectParams
 import qualified Chiasma.Data.SendKeysParams as SendKeysParams
-import Chiasma.Data.SendKeysParams (Key, keys, target)
+import Chiasma.Data.SendKeysParams (Key, SendKeysParams (..))
 import Chiasma.Data.SplitParams (JoinPaneParams (axis, detach, source, target))
 import qualified Chiasma.Data.Target as Target
-import Chiasma.Data.TmuxCommand (
-  TmuxCommand (CapturePane, CopyMode, KillPane, MovePane, PipePane, ResizePane, SelectPane, SendKeys),
-  )
+import Chiasma.Data.TmuxCommand (TmuxCommand (..))
 import Chiasma.Data.TmuxId (PaneId, WindowId)
 import Chiasma.Data.View (View (View))
 import qualified Chiasma.Effect.TmuxApi as Tmux
@@ -59,7 +56,7 @@
   PaneId ->
   Sem r ()
 closePane paneId =
-  Tmux.send (KillPane def { target = Target.Pane paneId })
+  Tmux.send (KillPane def { KillPaneParams.target = Target.Pane paneId })
 
 isPaneIdOpen ::
   Member (TmuxPanes Codec.Pane) r =>
@@ -132,14 +129,14 @@
   PaneId ->
   Sem r ()
 selectPane paneId =
-  Tmux.send (SelectPane def { target = Target.Pane paneId })
+  Tmux.send (SelectPane def { SelectParams.target = Target.Pane paneId })
 
 copyMode ::
   Member Tmux r =>
   PaneId ->
   Sem r ()
 copyMode paneId =
-  Tmux.send (CopyMode def { target = Target.Pane paneId })
+  Tmux.send (CopyMode def { CopyModeParams.target = Target.Pane paneId })
 
 paneMode ::
   Member (TmuxPanes Codec.PaneMode) r =>
diff --git a/lib/Chiasma/Command/Session.hs b/lib/Chiasma/Command/Session.hs
--- a/lib/Chiasma/Command/Session.hs
+++ b/lib/Chiasma/Command/Session.hs
@@ -3,7 +3,7 @@
 import Chiasma.Codec.Data.Client (Client (Client))
 import Chiasma.Codec.Data.Session (Session (Session))
 import Chiasma.Data.Ident (Ident)
-import Chiasma.Data.SessionParams (name)
+import Chiasma.Data.SessionParams (SessionParams (..))
 import qualified Chiasma.Data.Target as Target
 import Chiasma.Data.TmuxCommand (TmuxCommand (ListClients, ListSessions, NewSession, SwitchClient))
 import Chiasma.Data.TmuxError (TmuxError (NoClients))
diff --git a/lib/Chiasma/Command/Window.hs b/lib/Chiasma/Command/Window.hs
--- a/lib/Chiasma/Command/Window.hs
+++ b/lib/Chiasma/Command/Window.hs
@@ -10,7 +10,7 @@
 import qualified Chiasma.Data.Target as Target
 import Chiasma.Data.TmuxCommand (TmuxCommand (ListWindows, NewWindow, SplitWindow))
 import Chiasma.Data.TmuxId (SessionId, WindowId)
-import Chiasma.Data.WindowParams (cwd, detach, name, target)
+import Chiasma.Data.WindowParams (WindowParams (..))
 import qualified Chiasma.Data.WindowSelection as WindowSelection
 import qualified Chiasma.Effect.TmuxApi as Tmux
 import Chiasma.Effect.TmuxApi (Tmux)
diff --git a/lib/Chiasma/Data/TmuxCommand.hs b/lib/Chiasma/Data/TmuxCommand.hs
--- a/lib/Chiasma/Data/TmuxCommand.hs
+++ b/lib/Chiasma/Data/TmuxCommand.hs
@@ -12,7 +12,7 @@
 import Chiasma.Codec.Data.Pane (Pane)
 import Chiasma.Codec.Data.Session (Session)
 import Chiasma.Codec.Data.Window (Window)
-import Chiasma.Data.CapturePaneParams (CapturePaneParams (CapturePaneParams), stripBlank, stripTrailingWs)
+import Chiasma.Data.CapturePaneParams (CapturePaneParams (..))
 import Chiasma.Data.CopyModeParams (CopyModeParams)
 import Chiasma.Data.DecodeError (DecodeError)
 import Chiasma.Data.KillPaneParams (KillPaneParams)
diff --git a/lib/Chiasma/Ui/Data/View.hs b/lib/Chiasma/Ui/Data/View.hs
--- a/lib/Chiasma/Ui/Data/View.hs
+++ b/lib/Chiasma/Ui/Data/View.hs
@@ -100,6 +100,9 @@
   second f (Tree l sub) =
     Tree l (fmap (second f) sub)
 
+instance Functor (Tree l) where
+  fmap = second
+
 instance Bifoldable Tree where
   bifoldMap fl fr (Tree l sub) = mappend (fl l) (foldMap (bifoldMap fl fr) sub)
 
@@ -115,6 +118,9 @@
 
   second f (TreeNode t) = TreeNode (second f t)
   second f (TreeLeaf p) = TreeLeaf (f p)
+
+instance Functor (TreeSub l) where
+  fmap = second
 
 instance Bifoldable TreeSub where
   bifoldMap fl fr (TreeNode t) = bifoldMap fl fr t
diff --git a/lib/Chiasma/Ui/ViewTree.hs b/lib/Chiasma/Ui/ViewTree.hs
--- a/lib/Chiasma/Ui/ViewTree.hs
+++ b/lib/Chiasma/Ui/ViewTree.hs
@@ -1,6 +1,6 @@
 module Chiasma.Ui.ViewTree where
 
-import Control.Lens (anyOf, cosmos, ix, mapMOf, transformM)
+import Control.Lens (cosmos, ix, transformM)
 import Control.Monad.Trans.Class (lift)
 import Control.Monad.Trans.Except (ExceptT (ExceptT), runExceptT)
 import Control.Monad.Trans.Writer (WriterT, runWriterT, tell)
