diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,14 @@
 # Revision history for salmon-apps
 
-## 0.2.0.0 -- unreleased
+## 0.3.0.0 -- 2026-10-31
+
+No change to the code. Requires `salmon-ops ^>=0.3.0.0` and `salmon-ops-recipes ^>=0.3.0.0`;
+every binary's `run serve` gains `--once`, `--linger`, `--json-log`, `--no-supervise` and
+`--up-directive` from `salmon-ops`.
+
+* Every external dependency now carries a PVP upper bound.
+
+## 0.2.0.0 -- 2026-10-23
 
 Breaking: exported functions of `GcpToy`, `PgPair` and `QemuPgHaToy` changed. Requires
 `salmon-ops ^>=0.2.0.0` and `salmon-ops-recipes ^>=0.2.0.0`.
diff --git a/salmon-apps.cabal b/salmon-apps.cabal
--- a/salmon-apps.cabal
+++ b/salmon-apps.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               salmon-apps
-version:            0.2.0.0
+version:            0.3.0.0
 synopsis:           A set of utilities built with Salmon at their core.
 description:        Tools useful for operating systems, and which benefit from specialized implementations configured via external files: salmon-migrator, salmon-pgpair, salmon-fleet, salmon-tui and others.
 homepage:           https://lucasdicioccio.github.io/salmon/
@@ -47,26 +47,26 @@
                     Migrator.Spec
 
     build-depends:    base >=4.16.3.0 && <4.22
-                    , aeson
-                    , async
-                    , brick
-                    , bytestring
-                    , http-client
-                    , containers
-                    , directory
-                    , filepath
-                    , layoutz-hs
-                    , network
-                    , optparse-applicative
-                    , optparse-generic
-                    , process
+                    , aeson ^>=2.3.2.0
+                    , async ^>=2.2.6
+                    , brick ^>=3.0
+                    , bytestring ^>=0.12.2.0
+                    , http-client ^>=0.7.19
+                    , containers ^>=0.7
+                    , directory ^>=1.3.8.5
+                    , filepath ^>=1.5.4.0
+                    , layoutz-hs ^>=0.1.0.0
+                    , network ^>=3.2.9.0
+                    , optparse-applicative ^>=0.19.0.0
+                    , optparse-generic ^>=1.5.3
+                    , process ^>=1.6.26.1
                     , salmon-core ^>=0.1.0.0
-                    , salmon-ops ^>=0.2.0.0
-                    , salmon-ops-recipes ^>=0.2.0.0
-                    , text
-                    , time
-                    , vty
-                    , unix
+                    , salmon-ops ^>=0.3.0.0
+                    , salmon-ops-recipes ^>=0.3.0.0
+                    , text ^>=2.1.3
+                    , time ^>=1.12.2
+                    , vty ^>=6.6
+                    , unix ^>=2.8.7.0
     ghc-options:   -Wall
     hs-source-dirs:   src
     default-language: Haskell2010
@@ -198,24 +198,24 @@
                     , Test.ReportInboundSpec
                     , Test.ReportSpec
     build-depends:    base >=4.16.3.0 && <4.22
-                    , QuickCheck
-                    , aeson
-                    , bytestring
-                    , directory
-                    , filepath
-                    , containers
-                    , process
-                    , network
+                    , QuickCheck ^>=2.19.0.0
+                    , aeson ^>=2.3.2.0
+                    , bytestring ^>=0.12.2.0
+                    , directory ^>=1.3.8.5
+                    , filepath ^>=1.5.4.0
+                    , containers ^>=0.7
+                    , process ^>=1.6.26.1
+                    , network ^>=3.2.9.0
                     , salmon-apps
                     , salmon-core ^>=0.1.0.0
-                    , salmon-ops-recipes ^>=0.2.0.0
-                    , salmon-ops ^>=0.2.0.0
-                    , tasty
-                    , tasty-hunit
-                    , tasty-quickcheck
-                    , temporary
-                    , text
-                    , time
+                    , salmon-ops-recipes ^>=0.3.0.0
+                    , salmon-ops ^>=0.3.0.0
+                    , tasty ^>=1.5.5
+                    , tasty-hunit ^>=0.10.2
+                    , tasty-quickcheck ^>=0.11.1
+                    , temporary ^>=1.3
+                    , text ^>=2.1.3
+                    , time ^>=1.12.2
     ghc-options:      -Wall
     default-language: Haskell2010
     default-extensions: OverloadedStrings
