diff --git a/docs/source/migrations/migrating_to_1.35.rst b/docs/source/migrations/migrating_to_1.35.rst
new file mode 100644
index 00000000..f69f922a
--- /dev/null
+++ b/docs/source/migrations/migrating_to_1.35.rst
@@ -0,0 +1,22 @@
+Migrating to Koji 1.35
+======================
+
+You should consider the following changes when migrating to 1.35:
+
+DB Updates
+----------
+
+Changes for new repo handling introduced a few new tables.
+
+As in previous releases, we provide a migration script that updates the database.
+
+::
+
+ # psql koji koji < /usr/share/doc/koji/docs/schema-upgrade-1.34-1.35.sql
+
+
+Other changes
+-------------
+
+There are numerous other changes in 1.35 that should not have a direct impact
+on migration. For details see: :doc:`../release_notes/release_notes_1.35`
diff --git a/docs/source/migrations/migrations.rst b/docs/source/migrations/migrations.rst
index 3f8c8eb1..0f7ee219 100644
--- a/docs/source/migrations/migrations.rst
+++ b/docs/source/migrations/migrations.rst
@@ -5,6 +5,7 @@ Migrations
.. toctree::
:maxdepth: 1
+ migrating_to_1.35
migrating_to_1.34
migrating_to_1.33
migrating_to_1.32
diff --git a/docs/source/release_notes/release_notes.rst b/docs/source/release_notes/release_notes.rst
index aeac26ef..a4f06f12 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.35
release_notes_1.34.1
release_notes_1.34
release_notes_1.33.1
diff --git a/docs/source/release_notes/release_notes_1.35.rst b/docs/source/release_notes/release_notes_1.35.rst
new file mode 100644
index 00000000..570164fa
--- /dev/null
+++ b/docs/source/release_notes/release_notes_1.35.rst
@@ -0,0 +1,352 @@
+
+Koji 1.35.0 Release notes
+=========================
+
+All changes can be found in `the roadmap `_.
+Most important changes are listed here.
+
+Major change is this release is kojira rewrite and repos on-demand.
+
+Migrating from Koji 1.34/1.34.1
+-------------------------------
+
+For details on migrating see :doc:`../migrations/migrating_to_1.35`
+
+
+Security Fixes
+--------------
+
+None
+
+
+Client Changes
+--------------
+
+**Don't try to resolve server version for old hubs**
+
+| PR: https://pagure.io/koji/pull-request/3891
+
+Some CLI commands have extended capabilities with newer hub versions. But if
+they were run against really old version (one that doesn't report its version),
+they've failed completely. Now the correctly use older API signatures.
+
+**New CLI command list-users**
+
+| PR: https://pagure.io/koji/pull-request/3970
+| PR: https://pagure.io/koji/pull-request/4008
+| PR: https://pagure.io/koji/pull-request/4051
+
+As we're more using user groups in policies, ``list-users`` with
+``--perm=`` and ``--inherited-perm`` options now could help with
+finding and debugging such users.
+
+``--type`` option would limit NORMAL/HOST/GROUP user types.
+
+**Fix remove-tag-inheritance with priority**
+
+| PR: https://pagure.io/koji/pull-request/4000
+
+Better handling of ``remove-tag-inheritance `` command
+variant.
+
+**Taskinfo CLI and webUI info message why output is not in the list**
+
+| PR: https://pagure.io/koji/pull-request/4075
+
+Informational messages for missing logs and task outputs.
+
+API Changes
+-----------
+
+**Anonymous getGroupMembers and getUserGroups**
+
+| PR: https://pagure.io/koji/pull-request/3912
+
+First call was previously requiring ``admin`` permission. As the same
+information is available through other paths this requirement was dropped. Alse
+new ``getUserGroups`` API call was added.
+
+**Better default handling for getMultiArchInfo**
+
+| PR: https://pagure.io/koji/pull-request/4164
+
+Simple API default update.
+
+ **Allow None in repoInfo for backwards compat**
+
+| PR: https://pagure.io/koji/pull-request/4192
+
+Web UI had in some cases problems to corectly display taskinfo page
+because of the older regression.
+
+System Changes
+--------------
+
+**Keep schema upgrade transactional**
+
+| PR: https://pagure.io/koji/pull-request/4141
+
+Simple fix to migration scripts. Indices are now created as part of the
+transaction as it doesn't take much time even in big deployments.
+
+**Backup signature headers in delete_rpm_sig**
+
+| PR: https://pagure.io/koji/pull-request/3944
+
+Signatures can be deleted by admin-only call. It is anyway a good practice to
+store even deleted signatures, so we can audit such situations. They are now
+stored in build directory.
+
+**Stop lowercasing the policy failure reason**
+
+| PR: https://pagure.io/koji/pull-request/3953
+
+Simple update to not convert messages in policies.
+
+**Let ``tag.extra`` override tag arches for noarch**
+
+| PR: https://pagure.io/koji/pull-request/4013
+
+In some cases noarch packages can't be built on some architectures. As there is
+no first-class support for such routing, tag can be modified via
+``extra.noarch_arches`` key.
+
+**Better index for rpm lookup**
+
+| PR: https://pagure.io/koji/pull-request/4026
+
+Improved index after addition of draft builds.
+
+**Auto arch refusal for noarch tasks**
+
+| PR: https://pagure.io/koji/pull-request/4060
+
+Scheduler improvement for noarch tasks which could have been assigned to
+builders without access to relevant buildroot architecture repos. It would
+speedup correct assigning of noarch tasks in some cases.
+
+**Fix errors in channel policy**
+
+| PR: https://pagure.io/koji/pull-request/4066
+
+Channel policy can refer to non-existent tags, etc. Policy would have failed
+even in case where there would be other valid rule.
+
+**Sort checksums before inserting**
+
+| PR: https://pagure.io/koji/pull-request/4073
+
+``create_rpm_checksums`` could have triggered deadlock. This change would
+prevent it.
+
+**Handle volumes when clearing stray build dirs**
+
+| PR: https://pagure.io/koji/pull-request/4092
+
+``recycle_build`` ignored some files and left them on non-default volumes
+instead of deleting. Newly created build then already contained some files and
+failed while trying to recreate them.
+
+**Drop unused DBHandler class**
+
+| PR: https://pagure.io/koji/pull-request/4095
+
+Logging class which is not used anywhere.
+
+**Stop suggesting that users need repo permission**
+
+| PR: https://pagure.io/koji/pull-request/4097
+
+``regen-repo`` is the correct permission which should be granted to users.
+``repo`` is a privileged one and is mostly intended for kojira.
+
+**CG import updates**
+
+| PR: https://pagure.io/koji/pull-request/4113
+
+Content generator API now allows uploading subdirectories instead of just flat
+structure. ``CG_import`` policy gets also ``version``, ``release`` and
+``btypes`` fields for additional checks.
+
+**Fix tz mismatch issues with various queries**
+
+| PR: https://pagure.io/koji/pull-request/4115
+
+Further unification of timestamp/timezone usage.
+
+**RetryError is subclass of AuthError**
+
+| PR: https://pagure.io/koji/pull-request/4117
+
+Small fix for unreachable code.
+
+**Provide tag data in policy_data_from_task_args**
+
+| PR: https://pagure.io/koji/pull-request/4121
+
+More data available for policy tests.
+
+
+Builder Changes
+---------------
+
+**Use dnf5-compatible "group install" command**
+
+| PR: https://pagure.io/koji/pull-request/3974
+
+Dnf5 dropped support for ``group install`` command so, we've made a dnf4/5
+compatible changes.
+
+**Split out buildroot log watching logic**
+
+| PR: https://pagure.io/koji/pull-request/4023
+
+Rewritten code for handling mock's logs. It now allows to fetch more logs than
+before.
+
+**Update getNextTask for scheduler**
+
+| PR: https://pagure.io/koji/pull-request/4044
+
+Followup work after introducing new scheduler. Mostly builder code
+simplification.
+
+**Log if a restart is pending**
+
+| PR: https://pagure.io/koji/pull-request/4076
+
+Builder is more verbose about this situation.
+
+**Refuse image tasks when required deps are missing**
+
+| PR: https://pagure.io/koji/pull-request/4083
+
+If image-supporting libraries are not present on builder it will decline the
+image tasks without trying them, so they'll not fail.
+
+**Don't ignore files in uploadFile**
+
+| PR: https://pagure.io/koji/pull-request/4093
+
+Empty files were ignored before. Now we upload also these.
+
+Kojira
+------
+
+**Kojira on demand**
+
+| PR: https://pagure.io/koji/pull-request/4033
+| PR: https://pagure.io/koji/pull-request/4127
+
+Massive overwrite of repo regeneration. Previously, kojira was in charge of
+regenerating everything what is out of date. It could have been thousands of
+repos which will be never used. We've moved to on-demand behaviour drastically
+limiting number of ``newRepo`` tasks.
+
+Full description of behaviour change is at :doc:`../repo_generation`.
+
+Web UI
+------
+
+**Show only active channels at clusterhealth**
+
+| PR: https://pagure.io/koji/pull-request/4011
+
+Simplification of web ui.
+
+**Drop part of code related to host without update_ts**
+
+| PR: https://pagure.io/koji/pull-request/4086
+
+
+Plugins
+-------
+
+SCMPolicy
+.........
+| PR: https://pagure.io/koji/pull-request/3969
+
+New policy plugin which can decide if build can proceed with data based on SCM
+checkout results. Typical usecase would be checking that commit beeing built is
+present on some explicit branch.
+
+Kiwi
+....
+**Generate full logs with debug information**
+
+| PR: https://pagure.io/koji/pull-request/4046
+
+Uploading additional logs for easier kiwi debugging.
+
+**Only add buildroot repo if user repositories are not defined**
+
+| PR: https://pagure.io/koji/pull-request/4063
+
+We've changed default behaviour that kiwi has access to buildroot repo. Now it
+must be explicitly specified via ``--buildroot-repo`` option.
+
+
+**Add support for overriding image type attributes**
+
+| PR: https://pagure.io/koji/pull-request/4156
+| PR: https://pagure.io/koji/pull-request/4181
+
+CLI option ``--set-type-attr`` for kiwi. For possible values look at `kiwi docs
+`_.
+
+**Add support for overriding kiwi image file name format**
+
+| PR: https://pagure.io/koji/pull-request/4157
+
+CLI option ``--bundle-format`` for kiwi. For possible values look at `kiwi docs
+`_.
+
+
+**Add support for overriding version and releasever**
+
+| PR: https://pagure.io/koji/pull-request/4184
+
+``--version`` and ``--repo-releasever`` CLI options for overriding these in the
+resulting image.
+
+Devtools and tests
+------------------
+
+**Updates for various tests**
+
+| PR: https://pagure.io/koji/pull-request/4068
+| PR: https://pagure.io/koji/pull-request/4082
+| PR: https://pagure.io/koji/pull-request/4087
+| PR: https://pagure.io/koji/pull-request/4110
+| PR: https://pagure.io/koji/pull-request/4111
+| PR: https://pagure.io/koji/pull-request/4118
+| PR: https://pagure.io/koji/pull-request/4132
+| PR: https://pagure.io/koji/pull-request/4133
+| PR: https://pagure.io/koji/pull-request/4158
+| PR: https://pagure.io/koji/pull-request/4186
+
+**setup.py: Fix version retrieval on Python 3.13+**
+
+| PR: https://pagure.io/koji/pull-request/4100
+
+**make clean - more files**
+
+| PR: https://pagure.io/koji/pull-request/4103
+
+
+Documentation
+-------------
+
+**Mock's configuration**
+
+| PR: https://pagure.io/koji/pull-request/4025
+
+**Add external koji dev environments' links**
+
+| PR: https://pagure.io/koji/pull-request/4104
+
+**Drop unused auth options**
+
+| PR: https://pagure.io/koji/pull-request/4107
+
+Dropping some older options from example configuration files and documentation.
diff --git a/docs/source/repo_generation.rst b/docs/source/repo_generation.rst
index e848edd3..f9beb05f 100644
--- a/docs/source/repo_generation.rst
+++ b/docs/source/repo_generation.rst
@@ -1,4 +1,3 @@
-
Repo Generation
===============
diff --git a/koji.spec b/koji.spec
index a18a912d..16b7f81d 100644
--- a/koji.spec
+++ b/koji.spec
@@ -83,7 +83,7 @@
%define release %{baserelease}
%endif
Name: koji
-Version: 1.34.1
+Version: 1.35.0
Release: %{release}%{?dist}
License: LGPL-2.1-only and GPL-2.0-or-later
# the included arch lib from yum's rpmUtils is GPLv2+
@@ -651,6 +651,63 @@ rm -rf $RPM_BUILD_ROOT
%endif
%changelog
+* Fri Aug 16 2024 Tomas Kopecek - 1.35.0-1
+- PR#3891: Don't try to resolve server version for old hubs
+- PR#3912: anonymous getGroupMembers and getUserGroups
+- PR#3944: Backup signature headers in delete_rpm_sig
+- PR#3953: Stop lowercasing the policy failure reason
+- PR#3969: New scmpolicy plugin
+- PR#3970: Add CLI with users with given permission
+- PR#3974: Use dnf5-compatible "group install" command
+- PR#4000: Fix remove-tag-inheritance with priority
+- PR#4008: CLI list-users with filters from listUsers
+- PR#4011: Show only active channels at clusterhealth
+- PR#4013: let tag.extra override tag arches for noarch
+- PR#4023: split out buildroot log watching logic
+- PR#4025: docs: mock's configuration
+- PR#4026: Better index for rpm lookup
+- PR#4033: kojira on demand
+- PR#4044: Update getNextTask for scheduler
+- PR#4046: kiwi: Generate full logs with debug information
+- PR#4051: fixes for list-users
+- PR#4060: auto arch refusal for noarch tasks
+- PR#4063: kiwi: Only add buildroot repo if user repositories are not defined
+- PR#4066: fix errors in channel policy
+- PR#4068: Rework mocking of QueryProcessor in DBQueryTestCase
+- PR#4073: sort checksums before inserting
+- PR#4075: taskinfo CLI and webUI info message why output is not in the list
+- PR#4076: log if a restart is pending
+- PR#4082: More mocking cleanup
+- PR#4083: refuse image tasks when required deps are missing
+- PR#4086: Drop part of code related to host without update_ts
+- PR#4087: Increase index.py unit tests
+- PR#4090: Koji 1.34.1 release notes
+- PR#4092: handle volumes when clearing stray build dirs
+- PR#4093: don't ignore files in uploadFile
+- PR#4095: drop unused DBHandler class
+- PR#4097: stop suggesting that users need repo permission
+- PR#4100: setup.py: Fix version retrieval on Python 3.13+
+- PR#4103: make clean - more files
+- PR#4104: Add external koji dev environments' links
+- PR#4107: Drop unused auth options
+- PR#4110: DBHandler class dropped from API test
+- PR#4111: fix flake8
+- PR#4113: cg import updates
+- PR#4115: fix tz mismatch issues with various queries
+- PR#4117: RetryError is subclass of AuthError
+- PR#4118: basic unit test for kojid main
+- PR#4121: Provide tag data in policy_data_from_task_args
+- PR#4127: handle cases where there is no event before our ts
+- PR#4132: check-api: only warn for external type changes
+- PR#4133: more missing tearDowns
+- PR#4141: Keep schema upgrade transactional
+- PR#4158: Fix asserts in unit tests
+- PR#4164: better default handling for getMultiArchInfo
+- PR#4181: Fix a typo in the kiwi image type attribute override patch
+- PR#4184: kiwi: Add support for overriding version and releasever
+- PR#4186: Basic tests for kiwi plugin
+- PR#4192: allow None in repoInfo for backwards compat
+
* Mon May 6 2024 Tomas Kopecek - 1.34.1-1
- PR#3931: web: add some handy links for module builds
- PR#3942: policy_data_from_task_args: set target to None when it doesn't exist
diff --git a/koji/_version.py b/koji/_version.py
index 375e770a..bad3f23e 100644
--- a/koji/_version.py
+++ b/koji/_version.py
@@ -1,2 +1,2 @@
-__version_info__ = (1, 34, 1)
+__version_info__ = (1, 35, 0)
__version__ = '.'.join([str(x) for x in __version_info__])