diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9e508a52..4772ec19 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+# 3.1.0
+
++ Internal refactoring: switched from recursive functions to loop/recur to minimize stack traces in exceptions.
++ Missing and circular dependency exceptions now include a stack of keys inside `ex-info` for easier debugging.
++ Improved key generation: better naming of generated keys in `update-key`.
++ Increased test coverage to ensure better reliability.
++ Updated comparison with Integrant.
+
# 3.0.0
## New features
diff --git a/build.clj b/build.clj
index dae59758..b6ecf512 100644
--- a/build.clj
+++ b/build.clj
@@ -4,7 +4,7 @@
[clojure.string :as str]))
(def lib 'org.clojars.darkleaf/di)
-(def version "3.0.0")
+(def version "3.1.0")
(def class-dir "target/classes")
(def basis (b/create-basis {:project "deps.edn"}))
(def jar-file (format "target/%s.jar" (name lib)))
diff --git a/pom.xml b/pom.xml
index 6d2a1e94..40c7b9aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,5 +33,5 @@
1.11.1
- 3.0.0
+ 3.1.0