diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,18 @@
 
 * Latest Hackage released version: 3.30, 2026-08-21
 
+### Version 3.31, Not yet released
+
+  * The Hackage description now shows a screenshot of the GUI, and points at the
+    releases page for the prebuilt Mac and Linux bundles. The screenshot was dropped
+    from README.md in the same breath: Hackage renders the README below the description,
+    so keeping it in both would have shown the same image twice on one page.
+
+  * The READMEs shipped inside the binary bundles now walk through a single install
+    sequence -- unpack, place the files, set PATH, check -- instead of splitting the CLI
+    and the GUI into separately numbered steps that had to cross-reference each other.
+    The macOS one leads with the quarantine removal, since nothing runs before that.
+
 ### Version 3.30, 2026-08-21
 
   * The GUIs now group the floating-point formats by provenance instead of listing all
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -18,42 +18,57 @@
 The easiest way to get crackNum is from the
 [Releases page](https://github.com/LeventErkok/crackNum/releases). Each bundle is
 self-contained: the `crackNum` executable, a copy of `z3`, the graphical interface,
-a LICENSE, and a README with the platform-specific details.
+a LICENSE, and a README repeating the steps below.
 
 | Platform | Asset | Notes |
 | --- | --- | --- |
 | Linux (x86_64) | `crackNum-<version>-linux-x86_64.tar.gz` | Statically linked, so there is no glibc or distribution requirement: it runs as-is on any x86_64 Linux, old or new. |
-| macOS (Apple Silicon) | `crackNum-<version>-macos-arm64.tar.gz` | Includes `CrackNum.app`. Ad-hoc signed rather than notarized, so clear the quarantine flag as the bundled README explains. |
+| macOS (Apple Silicon) | `crackNum-<version>-macos-arm64.tar.gz` | Includes `CrackNum.app`. Ad-hoc signed rather than notarized, so clear the quarantine flag as shown below. |
 
-Unpack it and you can run straight out of the directory:
+Unpack the bundle anywhere you like, then put the files somewhere on your `PATH`.
+`z3` has to go there too, since crackNum shells out to it for every operation.
 
+**Linux** — all three files, the GUI script included:
+
 ```
-$ tar xzf crackNum-3.27-linux-x86_64.tar.gz
-$ cd crackNum-3.27-linux-x86_64
-$ ./crackNum -fsp 3.5
+$ tar xzf crackNum-<version>-linux-x86_64.tar.gz
+$ cd crackNum-<version>-linux-x86_64
+$ mkdir -p ~/bin && cp crackNum z3 crackNum.tcl ~/bin/
+$ export PATH=$HOME/bin:$PATH        # put this in your shell's startup file
 ```
 
-To use it from anywhere, put the files on your `PATH`. `z3` has to be there too,
-since crackNum shells out to it for every operation:
+The GUI is a Tcl/Tk script, so unlike the two binaries it needs something from your
+system: `wish` on your `PATH`. Install it with `sudo apt install tk` (Debian/Ubuntu),
+`sudo dnf install tk` (RHEL/Fedora), or `nix profile install nixpkgs#tk`.
 
+**macOS** — clear the quarantine flag first, since these are ad-hoc signed rather
+than notarized and nothing will run before you do:
+
 ```
-$ mkdir -p ~/bin && cp crackNum z3 ~/bin/       # on Linux, add crackNum.tcl for the GUI
-$ export PATH=$HOME/bin:$PATH                   # add to your shell rc to make it stick
+$ tar xzf crackNum-<version>-macos-arm64.tar.gz
+$ cd crackNum-<version>-macos-arm64
+$ xattr -dr com.apple.quarantine crackNum z3 CrackNum.app
+$ mkdir -p ~/bin && cp crackNum z3 ~/bin/
+$ cp -R CrackNum.app /Applications/
+$ export PATH=$HOME/bin:$PATH        # put this in your login shell's startup file
 ```
 
-Each bundle's own README covers the platform details — installing `CrackNum.app` on
-macOS, and `wish` for the Tcl/Tk GUI on Linux.
+Either way, check with:
 
+```
+$ crackNum -fsp 3.5
+$ crackNum --gui
+```
+
 #### From Hackage
 
 ```
 $ cabal install crackNum
 ```
 
-`crackNum` uses [SBV](http://hackage.haskell.org/package/sbv) and delegates the
-actual floating-point reasoning to an SMT solver, so installed this way you also
-need [z3](https://github.com/Z3Prover/z3) on your `PATH`. (The prebuilt bundles
-above carry their own copy, so there is nothing extra to install.)
+Installed this way you also need [z3](https://github.com/Z3Prover/z3) on your
+`PATH`: crackNum delegates the floating-point reasoning to it, via
+[SBV](http://hackage.haskell.org/package/sbv).
 
 ### Supported formats
 
@@ -394,8 +409,6 @@
 fully functional as a command-line tool without it. The GUI is just a thin
 front-end that calls the `crackNum` binary underneath, so it supports exactly
 the same formats.
-
-![crackNum GUI](https://raw.githubusercontent.com/LeventErkok/crackNum/master/crackNumGUI.png)
 
 If you installed from a [release bundle](#prebuilt-binaries-nothing-to-build-no-haskell-toolchain)
 the GUI is already in it, and there is nothing to build on either platform. The rest
diff --git a/crackNum.cabal b/crackNum.cabal
--- a/crackNum.cabal
+++ b/crackNum.cabal
@@ -1,10 +1,15 @@
 Cabal-version      : 2.2
 Name               : crackNum
-Version            : 3.30
+Version            : 3.31
 Synopsis           : Crack various integer and floating-point data formats
 Description        : Crack IEEE-754 and other float formats and arbitrary sized words and integers, showing the layout.
+                     Along with a command-line interface on any platform, native MacOS and Tcl-based Linux GUIs are available as well:
                      .
-                     For details, please see: <http://github.com/LeventErkok/crackNum/>
+                     <<https://raw.githubusercontent.com/LeventErkok/crackNum/master/crackNumGUI.png>>
+                     .
+                     For details, please see: <http://github.com/LeventErkok/crackNum/>. See the
+                     <https://github.com/LeventErkok/crackNum/releases releases page>
+                     for binary releases for Mac and Linux.
 License            : BSD-3-Clause
 License-file       : LICENSE
 Author             : Levent Erkok
