Release Notes¶
The following changes will be part of the upcoming pretalx release. For already released changes, head over here:
Latest release: 2026.2.1 (2026-07-08)
Next Release
Security
The
html_signaltemplate tag and thehtml_headsignals no longer mark all signal responses as safe HTML. Responses are now escaped unless a plugin explicitly marks them as safe, for example by usingformat_htmlor by rendering a template. If your plugin returns HTML as plain strings in response to these signals, please update them to return a string that is marked as safe.
Schedule
[Feature] The schedule’s timezone selector now offers all timezones instead of only the event timezone and the visitor’s own one, with those two pinned to the top of the list. It is still hidden for visitors who are in the event timezone (or to be precise: whose timezone behaves the same as the event timezone for the duration fo the event).
[Feature] The session and speaker popups in the schedule and the embedded widget now show all of the information available on the session and speaker pages: whether a session is not going to be recorded, session images, all scheduled time slots of a session (rather than just the currently selected one), room descriptions, and calendar export links for sessions and speakers. (#2583)
[Fixed bug] The public schedule changelog page and the schedule feed were very slow on events with many released schedule versions.
[Fixed bug] Long room names in the schedule grid stretched the grid instead of being cut off. They are now shortened with an ellipsis, and show the full name as a tooltip.
[Fixed bug] Long session titles and speaker lists could overflow their session in the schedule grid. They are now limited to a couple of lines, and expand when you hover them.
[Fixed bug] The session and speaker popups in the schedule (and the embedded widget) did not show all custom fields: long-text fields were always omitted, and file answers linked to the wrong address. (#2583)
[Fixed bug] When the viewer’s local timezone differed from the timezone the schedule was displayed in, some sessions in the schedule grid were shown as starting at the beginning of the day and lasting for hours. (#2585)
[Fixed bug] Users who were reviewers for an event could in some cases not save schedule favourites or sign up for sessions. (#2573)
[Fixed bug] Calendar exports (.ics files) labelled their timezone with an abbreviation (like GMT or PST) rather than the full timezone name, which led some calendar applications, particularly on macOS, to import sessions as taking place at the wrong time. (#2588)
[Fixed bug] On touch devices, the favourites filter (and some other buttons) kept their highlighted hover look after being tapped. (#2568)
[Fixed bug] Public pages could grow wider than the screen on mobile devices, as tooltips (like the room description on session pages) took up space even while hidden. (#2569)
Call for Papers
[Feature] Custom fields of the “choose one” type with four or more options are shown as a dropdown, which preselected its first option, inviting accidental choices. Custom field dropdowns are now initially left blank.
[Feature] Multiple choice custom fields can now be configured with a minimum and maximum number of options that may be selected.
[Feature] Proposal titles can now be up to 1000 characters long instead of 200. If you want to keep titles short, you can configure a maximum title length in the CfP editor.
[Feature] If fields are limited to a set number of words rather than characters, pretalx now shows the same kind of progress indicator and highlights for content beyond the configured maximum length.
[Fixed bug] Fields that failed validation lost their accessibility error marker in some cases, so screen readers no longer announced them as invalid.
[Fixed bug] The frontend word length validation ignored minimum lengths and differed in its count from the actual server-level validation (e.g. by counting leading and trailing whitespace and counting e.g. “state-of-the-art” as four words instead of one).
[Fixed bug] In Markdown fields, pasting a URL while text was selected always wrapped the selection as a new link, even if this nested one link inside another, breaking the rendered Markdown. If the selected text is already inside a Markdown link format, the URL is now pasted as-is.
Organiser backend
[Feature] The collapsed navigation sidebar now shows the notification markers for unsent emails and unreleased schedule changes.
[Fixed bug] Multilingual input fields showed the wrong flag for a number of languages, and no flag at all for others.
[Fixed bug] On the event dashboard, the “Active reviewers” tile never linked to the team management page, even for organisers with permission to change event settings.
Organiser backend: E-Mails
[Feature] The email preview now shows which parts of the text come from a placeholder.
[Feature] Placeholders can now be inserted by clicking them in the email template editor, like you already could in the email composer.
[Fixed bug] Clicking the “Send all on this page” button in the outbox did not work and showed a server error instead of sending the emails.
Organiser backend: Speaker management
[Fixed bug] Sorting the organiser-wide speaker list by a column resulted in a server error. (#2565)
Organiser backend: Session management
[Feature] The session list in the organiser area now starts out filtered to submitted, accepted and confirmed sessions, hiding rejected, cancelled and withdrawn ones.
[Fixed bug] When creating a session in the organiser area with a speaker, if the creation step failed due to form validation, the selected speaker email disappeared from the speaker field and had to be entered again.
[Fixed bug] Anonymising a session did not work when the attendee signup feature was enabled.
Organiser backend: Scheduling
[Fixed bug] In the schedule editor, dragging a session could drop it in the wrong room, or refuse the drop entirely, after changing the grid size, e.g. by resizing the browser window or after switching to the condensed view.
[Fixed bug] Data exporters that only work on a released schedule were offered before the schedule was released, and then produced empty files. They are now greyed out in the organiser area until the schedule is released.
[Fixed bug] In the schedule editor, copying a break to other rooms while also changing its duration did the copying first, and then the duration change, resulting in inconsistent durations between the original and the copies.
API
[Announcement] The legacy API has been removed. API tokens created before pretalx v2025.1.0 that still use it will receive a
400response until they are upgraded to API v1 or v2 in the token list at/orga/me. Thelimitandoffsetpagination parameters that the legacy API used have been removed along with it – usepageandpage_sizeinstead.
Languages and translations
[Fixed bug] In right-to-left languages, the preview of Markdown text fields showed the text left-to-right, even though the input field itself was correctly right-to-left.
General
[Feature] Controls that expand or collapse a section, like the navigation sidebar submenus or the email log entries, can now be operated with a keyboard, and are now announced correctly by screen readers.
[Feature] To improve accessibility, links in running text are now underlined, so they no longer rely on colour alone to be recognisable.
[Feature] Error pages, like the “page not found” page, are now rendered in the user’s preferred language if possible instead of the default language.
[Fixed bug] Some help texts and labels were always shown in English.
[Fixed bug] In right-to-left languages, the preview of Markdown text fields showed the text left-to-right, even though the input field itself was correctly right-to-left.
Administrators
[Feature] pretalx now checks that your Python and PostgreSQL versions are supported, both in
check --deployand when running migrations.[Feature] The update check page now shows a status badge for every row, so it is easier to see which parts of your installation have updates available.
Developers and plugins
[Announcement] Exporters are now created with the schedule they are meant to export, both when they are rendered and when they are only listed, so that checks like
is_publiccan take the schedule into account. If you provide or use schedule exporters, please change your call signature to passing and expecting the schedule rather than the event.[Announcement]
QueuedMail.send, deprecated in v2026.2.0, has been removed. Plugins have to usesend_draftorsend_transientfrompretalx.mail.domain.sendinstead. The compatibility shim for the oldpretalx.common.send_mailCelery task has been removed along with it.[Announcement] The legacy
orga.change_settingspermission alias, deprecated since v2025.1.0, has been removed. Plugins that still check it have to useevent.update_eventinstead.[Announcement] The
html_signaltemplate tag and thehtml_headsignals no longer mark all signal responses as safe HTML. Responses are now escaped unless a plugin explicitly marks them as safe, for example by usingformat_htmlor by rendering a template. If your plugin returns HTML as plain strings in response to these signals, please update them to return a string that is marked as safe.