Unreleased

v3.0.0-104

New Features

  • Patch comments and cover letter comments can be marked ‘addressed’ or ‘unaddressed’ to reflect whether the comment has been addressed by the patch and cover letter submitter or a reviewer. The current state of a comment is shown in the header when showing a comment and users with edit permission can toggle the state using an adjacent button.

  • Two new event types have been added: cover-comment-created and patch-comment-created. As their names would suggest, these track the creation of new cover letter and patch comments respectively.

  • The Link header included in REST API responses now includes first and last relations, as described in RFC 5988. As their name would suggest, these can be used to navigate to the beginning and end of the resource.

Upgrade Notes

  • Django 3.0 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.

  • Django 3.1 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.

  • Python 3.6 is no longer supported. It is no longer supported upstream and most distributions provide a newer version.

  • Django 2.2 is no longer supported. Is is no longer supported upstream and most distributions provide a newer version.

  • Database configuration has been added to patchwork.settings.base. Previously, this had to be specified in the settings.py file manually created by admins. The following environment variables can now be used to configure the settings:

    • DATABASE_TYPE (one of: postgres, sqlite3, mysql; default: mysql)

    • DATABASE_HOST (default: localhost)

    • DATABASE_PORT (default: <unset>)

    • DATABASE_NAME (default: patchwork)

    • DATABASE_USER (default: patchwork)

    • DATABASE_PASSWORD (default: patchwork)

    If you are manually defining DATABASES in your settings.py file, this should have no impact. However, you may wish to rework your deployment to use environment variables instead.

  • Database configuration variables PW_TEST_DB_* are renamed to their corresponding DATABASE_* names to sync development & production environments setup. Some mistaken references to DATABASE_PASS are also replaced with DATABASE_PASSWORD to follow the convention.

Bug Fixes

  • Fixed a compatability issue with Django 3.1 that prevented users from resetting their password. (#394)

  • Comments and whitespace are now correctly stripped from the Message-ID, In-Reply-To, and References headers. One side effect of this change is that the parser is now stricter with regards to the format of the msg-id component of these headers: all identifiers must now be surrounded by angle brackets, e.g. <abcdef@example.com>. This is mandated in the spec and a review of mailing lists archives suggest it is broadly adhered to. Without these markers, there is no way to delimit msg-id from any surrounding comments and whitespace.

API Changes

  • The API version has been updated to v1.3.

  • A new REST API endpoint is available at /api/covers/<cover_id>/comments/<comment_id>/. This can be used to retrieve and update (e.g. addressed state) details about a specific cover comment.

  • A new REST API endpoint is available at /api/patches/<patch_id>/comments/<comment_id>/. This can be used to retrieve and update (e.g. addressed state) details about a specific patch comment.

  • The list_archive_url field will now be correctly shown for patch comments and cover letter comments. (#391)

v3.0.0

Prelude

There are two main changes in this release: the removal of Python 2.7 support and the resolution of the longstanding performance issues introduced by the Submission model. On top of this, there is the usual bump in requirements, a significant amount of fixes to the documentation for the REST API, and the squashing of all migrations introduced in versions up to and including v2.2.0.

New Features

Upgrade Notes

  • Django 1.11, 2.0 and 2.1 are no longer supported. These are no longer supported upstream and most distributions provide a newer version.

  • djangorestframework 3.6, 3.7, 3.8 and 3.9 are no longer supported. These were only used with Django 1.11 to 2.1 and are not compatible with any version now supported by Patchwork.

  • django-filter 1.1.0 is no longer supported. This was only used with Django 1.11 and is not compatible with any version now supported by Patchwork.

  • Python 2.7 and 3.5 are no longer supported. These are no longer supported upstream and most distributions provide a newer version.

Bug Fixes

  • An issue that preventing updating bundles via the REST API without updating the included patches has been resolved. (#357)

  • The parser module now uses an atomic select-insert when creating new patch, cover letter and comment entries. This prevents the integrity errors from being logged in the DB logs. (#358)

  • Resolve a bug that would prevent listing patches for a project via the browseable API view when logged in with admin permissions (issue #379)

  • Previously, it was possible to create a project with a linkname containing invalid URL characters. This would result in broken URLs. We now validate this field and restrict characters to unicode slugs (unicode letters, numbers, underscores and hyphens).

API Changes

  • The REST API now supports filtering patches and cover letters by message ID, using the msgid query parameter. Don’t include leading or trailing angle brackets.