diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,90 @@
+Hatt changelog
+==============
+
+Version 1.5.0
+-------------
+
+* Breaking API change: variables are now represented by a newtype wrapper `Var`
+  around `Char`s, rather than just a `String`. This made it easier to write a
+  good QuickCheck instance for this type.
+* Added QuickCheck instances for the `Expr` and `Var` datatypes.
+* Added a module to perform conversions of expressions to various normal forms,
+  including negation normal form, conjunctive normal form and disjunctive normal
+  form. Its use is supported in interactive mode by prefixing an expression with
+  "nnf", "cnf" or "dnf". Tests for the module are included and can be run with
+  `cabal test`. The module is exported as `Data.Logic.Propositional.NormalForms`
+  and must be imported separately.
+* The `Data.Logic.Propositional.Tables` module is now exported by the library.
+  Its `truthTable` and `truthTableP` functions are still exported by the main
+  `Data.Logic.Propositional` module (as well as by the newly exposed module) for
+  backwards compatibility.
+* The `values` function is now exported.
+
+Version 1.4.0
+-------------
+
+* Make the parser slightly more liberal: unparenthesised expressions with a
+  binary connective as their primary connective such as "a | b" are now parsed
+  correctly, as are expressions with superfluous spaces such as " ( c -> ~ d )".
+
+Version 1.3.1
+-------------
+
+* Added command history and better text input handling with Haskeline.
+
+Version 1.3.0
+-------------
+
+* Add the `--coloured` command-line flag and `colour` command in interactive
+  mode to make truth value colouring optional.
+* Relax containers dependency to >= 0.3 && < 0.5.
+
+Version 1.2.1
+-------------
+
+* Use truth table and parsing code to produce the example console session in
+  the interactive mode help text.
+
+Version 1.2.0
+-------------
+
+* Truth values are coloured green (T) and red (F) when printed.
+
+Version 1.1.1
+-------------
+
+* Correct semantics for interpreting conditionals. Fixes an operator precedence
+  bug in the previous implementation.
+
+Version 1.1
+-----------
+
+* Allow variables to be lower case ASCII letters as well as upper case.
+
+Version 1.0
+-----------
+
+* Pretty-printing can now be enabled and disabled when in the interactive mode
+  by using the `pretty` command.
+
+Version 0.3
+-----------
+
+* Added an interactive mode.
+* Made interactive mode the default: it's only not entered if the `--evaluate`
+  flag is passed and the `--interactive` flag is not.
+
+Version 0.2
+-----------
+
+* Added the `--pretty` option to pretty-print expressions.
+* The `--evaluate` option now prints ASCII truth tables by default.
+* Added `truthTableP` function to allow configurable expression printing.
+* The `variables` function now returns a list of unique elements.
+* Dependency `base` loosened to >= 4 && < 5 so it will build with GHC 7.
+* Exposed and other modules now correctly differentiated in cabal file.
+
+Version 0.1
+-----------
+
+* Initial release.
diff --git a/hatt.cabal b/hatt.cabal
--- a/hatt.cabal
+++ b/hatt.cabal
@@ -1,5 +1,5 @@
 Name:               hatt
-Version:            1.5.0.0
+Version:            1.5.0.2
 
 Synopsis:           A truth table generator for classical propositional logic.
 Description:        Hatt is a command-line program which prints truth tables
@@ -18,7 +18,8 @@
 Cabal-version:      >= 1.8
 
 Build-type:         Simple
-Extra-source-files: README.md
+Extra-source-files: README.md,
+                    CHANGELOG
 
 Source-repository head
   Type:             git
@@ -28,7 +29,7 @@
   Hs-Source-Dirs:   src
   GHC-options:      -Wall
   Build-depends:    base           >= 4 && < 5,
-                    containers     >= 0.3 && < 0.5,
+                    containers     >= 0.3 && < 0.6,
                     parsec         >= 2.1 && < 3.2,
                     QuickCheck     >= 2.4,
                     ansi-wl-pprint >= 0.6 && < 0.7
@@ -44,7 +45,7 @@
   Build-depends:    base           >= 4 && < 5,
                     hatt,
                     cmdargs        >= 0.7,
-                    haskeline      >= 0.6 && < 0.7
+                    haskeline      >= 0.6
 
 Test-Suite test-hatt
   Type:             exitcode-stdio-1.0
diff --git a/src/hatt.hs b/src/hatt.hs
--- a/src/hatt.hs
+++ b/src/hatt.hs
@@ -42,7 +42,7 @@
   , interactive = False &= help "Enter interactive mode"
   , pretty      = False &= help "Use Unicode logic symbols"
   , coloured    = False &= help "Use colour-coded symbols"
-  } &= summary "Hatt 1.4.0.2, (c) Benedict Eastaugh 2012"
+  } &= summary "Hatt 1.5.0.2, (c) Benedict Eastaugh 2012"
     &= program "hatt"
 
 main :: IO ()
