diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,15 @@
 # Revision history for reflex-vty
 
+## Unreleased/Next
+
+* Update the Nix build and project skeleton to NixOS 26.05 and support GHC 9.8, 9.10, and 9.12. Generated projects now pin the committed, upstream-available reflex-vty revision from which the skeleton is run.
+
+## 1.2.0.0
+
+* Fix: `inputInFocusedRegion` now drops `EvPaste` events in unfocused regions, so paste doesn't go to every `textInput` on screen. Previously only `EvKey` was gated on focus.
+* Fix: `grout` no longer sets focus to `True` for its child elements. Instead it inherits focus from its parent.
+* *Breaking change*: Add `_textInputConfig_acceptTab` to control tab key behavior in text inputs.
+
 ## 1.1.0.0
 
 * *Breaking change*: reflex-vty now builds on Windows. OS signals are handled through a platform-agnostic type called `AppSignal`. This changes `VtyApp`'s signal argument (`Event t AppSignal` instead of `Event t Signal` (synonym for `CInt`)).
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -71,6 +71,8 @@
 
 #### With reflex-platform
 
+Prebuilt Nix dependencies are available from `https://nixcache.reflex-frp.org`. NixOS users can enable the cache by following the [binary cache setup instructions](https://github.com/reflex-frp/reflex-platform/blob/f70e481fa59ecb7958abeb2cb928c79efcd65f43/notes/NixOS.md).
+
 Enter a nix-shell for the project:
 ```bash
 git clone https://github.com/reflex-frp/reflex-vty.git
@@ -88,10 +90,10 @@
 
 ##### Selecting a compiler
 
-`nix-shell` defaults to GHC 9.8. The other compilers defined in `release.nix` are `ghc94`, `ghc96`, and `ghc98`. To enter a shell with one of them, pass it as the `compiler` argument:
+`nix-shell` defaults to GHC 9.12. The compilers defined in `release.nix` are `ghc98`, `ghc910`, and `ghc912`. To enter a shell with one of them, pass it as the `compiler` argument:
 
 ```bash
-nix-shell --argstr compiler ghc96
+nix-shell --argstr compiler ghc98
 ```
 
 If you were previously building with a different compiler, you may need to run `cabal clean` first.
diff --git a/reflex-vty.cabal b/reflex-vty.cabal
--- a/reflex-vty.cabal
+++ b/reflex-vty.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: reflex-vty
-version: 1.1.0.0
+version: 1.2.0.0
 synopsis: Reflex FRP host and widgets for VTY applications
 description:
   Build terminal applications using functional reactive programming (FRP) with Reflex FRP (<https://reflex-frp.org>).
diff --git a/src/Reflex/Vty/Widget.hs b/src/Reflex/Vty/Widget.hs
--- a/src/Reflex/Vty/Widget.hs
+++ b/src/Reflex/Vty/Widget.hs
@@ -293,6 +293,9 @@
         return $ case e of
           -- filter keyboard input if region is not focused
           V.EvKey _ _ | not focused -> Nothing
+          -- pastes are keyboard input too; deliver them only to the focused
+          -- region so they don't land in every 'textInput' at once
+          V.EvPaste _ | not focused -> Nothing
           -- filter scroll wheel input based on mouse position
           V.EvMouseDown x y btn m | btn == V.BScrollUp || btn == V.BScrollDown -> case tracking of
             trck@(Tracking _) -> Just (trck, Nothing)
diff --git a/src/Reflex/Vty/Widget/Input/Text.hs b/src/Reflex/Vty/Widget/Input/Text.hs
--- a/src/Reflex/Vty/Widget/Input/Text.hs
+++ b/src/Reflex/Vty/Widget/Input/Text.hs
@@ -51,6 +51,12 @@
   --     }
   --   @
   , _textInputConfig_tabWidth :: Int
+  -- ^ Number of columns a tab character occupies when @'acceptTab'@ is enabled.
+  , _textInputConfig_acceptTab :: Bool
+  -- ^ Whether the Tab key inserts a tab character into the input. Defaults to
+  --   'False', so Tab is left available for focus cycling (e.g.
+  --   'Reflex.Vty.Widget.Input.tabNavigation'). Set to 'True' for editors that
+  --   should insert tabs.
   , _textInputConfig_display :: Dynamic t (Char -> Char)
   -- ^ Transform the characters in a text input before displaying them. This is useful, e.g., for
   --   masking characters when entering passwords.
@@ -60,7 +66,7 @@
   }
 
 instance Reflex t => Default (TextInputConfig t) where
-  def = TextInputConfig empty never 4 (pure id) TextAlignment_Left
+  def = TextInputConfig empty never 4 False (pure id) TextAlignment_Left
 
 -- | The output produced by text input widgets, including the text
 -- value and the number of display lines (post-wrapping). Note that some
@@ -92,10 +98,16 @@
   rec -- we split up the events from vty and the one users provide to avoid cyclical
       -- update dependencies. This way, users may subscribe only to UI updates.
       let valueChangedByCaller = _textInputConfig_modify cfg
+          -- Unless tab insertion is enabled, drop Tab/BackTab so they remain
+          -- available for focus cycling instead of being typed into the field.
+          keyForZipper =
+            if _textInputConfig_acceptTab cfg
+              then i
+              else ffilter notTabKey i
       let valueChangedByUI =
             mergeWith
               (.)
-              [ uncurry (updateTextZipper (_textInputConfig_tabWidth cfg)) <$> attach (current dh) i
+              [ uncurry (updateTextZipper (_textInputConfig_tabWidth cfg)) <$> attach (current dh) keyForZipper
               , let displayInfo = (,) <$> current rows <*> scrollTop
                 in ffor (attach displayInfo click) $ \((dl, st), MouseDown _ (mx, my) _) ->
                      goToDisplayLinePosition mx (st + my) dl
@@ -219,3 +231,11 @@
   V.EvKey V.KPageUp [] -> pageUp pageSize
   V.EvKey V.KPageDown [] -> pageDown pageSize
   _ -> id
+
+-- | 'True' unless the event is a (possibly shifted) Tab keypress. Used to keep
+-- Tab available for focus cycling when '_textInputConfig_acceptTab' is off.
+notTabKey :: V.Event -> Bool
+notTabKey = \case
+  V.EvKey (V.KChar '\t') _ -> False
+  V.EvKey V.KBackTab _ -> False
+  _ -> True
diff --git a/src/Reflex/Vty/Widget/Layout.hs b/src/Reflex/Vty/Widget/Layout.hs
--- a/src/Reflex/Vty/Widget/Layout.hs
+++ b/src/Reflex/Vty/Widget/Layout.hs
@@ -619,4 +619,5 @@
   -> m a
 grout c w = do
   r <- region c
-  pane r (pure True) w
+  foc <- focus -- Inherit the ambient focus
+  pane r foc w
