Highlights from 2025-12-10 release
The majority of changes focus on stabilizing the system and migrating projects to the new PULP-based repository management system.
New Features
There is a new API endpoint, along with CLI support, for re-generating API tokens (allowing the creation of a new token using an existing, but still valid, one). See PR#3960.
The
wait()helper has become an official part of thepython-coprAPI. See #3653.Copr now allows storing wildcard strings in the “Packit allowed forge projects” field.
The Fedora Copr Frontend is now protected by Anubis to defend against unreasonable bot load. See #4064.
Other Changes and Bugfixes
frontend: Correctly marks canceled builds as “canceled” (not failed), and vice versa. #3844.
backend: Implemented a bigger “open FDs limit” for the repository pruner cron job. This fixes previous tracebacks that led to unfinished pruning and increased storage consumption. #4048.
backend: The worker controlling the build now waits until the correct repositories are fully created (regardless of whether they are on the backend or in Pulp), PR#4032.
backend: Allow builders to run the SSH daemon on a non-standard port (other than 22).
copr-common: Fixed support for PATCH requests.
Fixed errors and warnings encountered when building documentation for a few Copr packages.
backend: Stopped creating empty “spawner,” “terminator,” and “vmm” logs (as they have not been receiving any log entries for some time).
backend/frontend: Dropped the requirement on pytz and now use zoneinfo.
frontend: No longer raises a traceback for unexplained OAuthError errors. (If you observe these errors on the client side, please report/explain them!)
frontend: Added protection against tracebacks when copr.storage is None (implemented a database update via an Alembic migration).
frontend: Removed the last remaining logic leftovers of modularity.
frontend: Dropped the custom RedisSession class in favor of the standard flask-session (which now supports Redis).
frontend: Streamed pages (those serving many items, e.g., builds) now preload additional fields from the database in advance to avoid server-side errors.