diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe967394bfdedb27f4b36db6f87b7c9b48aefb1f..8f83a1c5fda67604cae4b9fb4ab401035a1ef555 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,9 +16,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ---
 
-## [0.5.4] - in planning
+## [0.5.5] - unreleased
 
-*Plan: basic farm model (#16), decouple CairoMakie (#81), test Skylark model (#96, #97)*
+*Plan: basic farm model (#16), decouple CairoMakie (#81)*
+
+
+## [0.5.4] - 08-08-2024
+
+**Skylark data analysis and new internal utility functions**
+
+### Added
+
+- `AnnualDate` type and associated functions for working with recurring dates (#101)
+  - can be constructed from two `Int64`, a `Date`, or a `Tuple{Int64,Int64}`
+  - automatic conversion from `Date` or `Tuple{Int64,Int64}`
+  - can use operators: `==`, `<`, `+`, `-`, `:`
+  - `thisyear()`, `lastyear()`, `nextyear()` functions and macros
+
+- new file `core/utils.jl` for utility functions that fit in no other file
+
+- irregular data logging using `record!()`/`@record()` (#103)
+
+- data outputs & visualisation for the skylark model (#97)
+
+- `randn()` function and macro to sample from a vector using a normal distribution
+
+- `make install` to download and install Julia and package dependencies (on Linux, #67)
+
+- weather file for the Thüringer Becken
+
+### Changed
+
+- moved random number functions and macros from `input.jl` to `utils.jl`
+
+- expanded weather data for Jena to 1990-2023
+
+- Non-breeding skylarks only search for neighbours to follow once (-> huge
+  performance improvement!)
+
+### Fixed
+
+- bug fixes in the skylark model
 
 
 ## [0.5.3] - 31-07-2024
diff --git a/Project.toml b/Project.toml
index b45508cd43457106c3174fa986ff6e788c684775..131a5138c023ccfa4197c963415e0bba04a32288 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,7 +1,7 @@
 name = "Persefone"
 uuid = "039acd1d-2a07-4b33-b082-83a1ff0fd136"
 authors = ["Daniel Vedder <daniel.vedder@idiv.de>"]
-version = "0.5.3"
+version = "0.5.4"
 
 [deps]
 ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63"