diff --git a/docs/source/release_notes/release_notes.rst b/docs/source/release_notes/release_notes.rst
index b5001ca2..ae0969f4 100644
--- a/docs/source/release_notes/release_notes.rst
+++ b/docs/source/release_notes/release_notes.rst
@@ -5,6 +5,7 @@ Release Notes
.. toctree::
:maxdepth: 1
+ release_notes_1.28.1
release_notes_1.28
release_notes_1.27.1
release_notes_1.27
diff --git a/docs/source/release_notes/release_notes_1.28.1.rst b/docs/source/release_notes/release_notes_1.28.1.rst
new file mode 100644
index 00000000..be92ac97
--- /dev/null
+++ b/docs/source/release_notes/release_notes_1.28.1.rst
@@ -0,0 +1,98 @@
+Koji 1.28.1 Release notes
+=========================
+
+All changes can be found in `the roadmap `_.
+Most important changes are listed here.
+
+Migrating from Koji 1.28
+------------------------
+
+No special actions are needed.
+
+
+Security Fixes
+--------------
+
+None
+
+Library Changes
+---------------
+**Fix parsing of URLs with port numbers**
+
+| PR: https://pagure.io/koji/pull-request/3262
+
+1.28 feature allowing authentication tokens as part of git urls broke urls with
+specified port.
+
+Client Changes
+--------------
+**Same format output for list-buildroot with --verbose for py3/py2**
+
+| PR: https://pagure.io/koji/pull-request/3300
+
+Output format for python 2.x and 3.x were unified.
+
+Hub Changes
+-----------
+**Fix type option handling in readTaggedRPMS**
+
+| PR: https://pagure.io/koji/pull-request/3298
+
+As option is called ``type`` it masked builtins.type call used in exception
+handling.
+
+**Improve inheritance priority collision error message**
+
+| PR: https://pagure.io/koji/pull-request/3208
+
+More descriptive exception message.
+
+**Set dst permissions same as src permissions**
+
+| PR: https://pagure.io/koji/pull-request/3265
+
+Another regression introduced in 1.28 - newly header/payload split rpms were not
+writtend with the same file permissions so they weren't readable for some tasks.
+
+Kojira
+------
+**Don't call listTags more than once**
+
+| PR: https://pagure.io/koji/pull-request/3259
+
+Speed improvement - one of the caching calls is now run only at the start and
+not in every check cycle. It should bring a less more stress to the hub and a
+bit faster kojira noticing repo changes.
+
+Web Changes
+-----------
+**Fix syntax error**
+
+| PR: https://pagure.io/koji/pull-request/3263
+
+Broken HTML at hostedit page.
+
+**Fix attribute test**
+
+| PR: https://pagure.io/koji/pull-request/3303
+
+Search with empty field led to traceback - 1.28 regression.
+
+**Encode filename as UTF-8**
+
+| PR: https://pagure.io/koji/pull-request/3290
+
+Fix for rpminfo page.
+
+**Fix tag and target shows as string, not as dict to string**
+
+| PR: https://pagure.io/koji/pull-request/3252
+
+Fixed wrong target representation for some tasks in tasks overview page.
+
+Documentation/DevTools Changes
+------------------------------
+
+ * `Task flow diagram `_
+ * `Fix readTaggedRPMs rpmsigs option description `_
+ * `Increase CLI test cases `_
diff --git a/koji.spec b/koji.spec
index 77cb84a1..10d63c73 100644
--- a/koji.spec
+++ b/koji.spec
@@ -83,7 +83,7 @@
%define release %{baserelease}
%endif
Name: koji
-Version: 1.28.0
+Version: 1.28.1
Release: %{release}%{?dist}
License: LGPLv2 and GPLv2+
# the included arch lib from yum's rpmUtils is GPLv2+
@@ -644,6 +644,21 @@ rm -rf $RPM_BUILD_ROOT
%endif
%changelog
+* Mon Mar 28 2022 Tomas Kopecek - 1.28.0-1
+- PR#3263: Fix syntax error
+- PR#3303: www: fix attribute test
+- PR#3292: docs: Task flow diagram
+- PR#3290: web: encode filename as UTF-8
+- PR#3259: kojira: don't call listTags more than once
+- PR#3262: Fix parsing of URLs with port numbers
+- PR#3298: Use buildins.type when option is called type in readTaggedRPMS
+- PR#3300: Same format output for list-builroot with verbose for py3/py2
+- PR#3297: doc: fix readTaggedRPMs rpmsigs option description
+- PR#3270: Increase CLI test cases
+- PR#3208: hub: improve inheritance priority collision error message
+- PR#3265: Set dst permissions same as src permissions
+- PR#3252: Fix tag and target shows as string, not as dict to string
+
* Wed Feb 2 2022 Tomas Kopecek - 1.28.0-1
- PR#3028: Add limits on name values
- PR#3105: Deprecated --paths option in list-buildroot
diff --git a/koji/_version.py b/koji/_version.py
index 055ceff9..fb6a97f7 100644
--- a/koji/_version.py
+++ b/koji/_version.py
@@ -1,2 +1,2 @@
-__version_info__ = (1, 28, 0)
+__version_info__ = (1, 28, 1)
__version__ = '.'.join([str(x) for x in __version_info__])