Releases: indico/indico
v3.1.1
🎉 Improvements
- Prompt before leaving the event protection page without saving changes (#5222)
- Add the ability to clone abstracts (#5217)
- Add setting to allow submitters to edit their own contributions (#5213)
- Update the editing state color scheme (#5236)
- Include program codes in export API (#5246)
- Add abstract rating scores grouped by track (#5298)
- Allow uploading revisions when an editor hasn't been assigned (#5289)
🐛 Bugfixes
- Fix published editable files only being visible to users with access to the editing timeline (#5218)
- Fix incorrect date in multi-day meeting date selector dropdown in certain timezones (#5223)
- Remove excessive padding around category titles (#5225)
- Fix error when exporting registrations to PDFs that contained certain invalid HTML-like sequences (#5233)
- Restore logical order of registration list columns (#5240)
- Fix a performance issue in the HTTP API when exporting events from a specific category while specifying a limit (only affected large databases) (#5260)
- Correctly specify charset in iCalendar files attached to emails (#5228, #5258, thanks @imranyusuff)
- Fix very long map URLs breaking out of the event management settings box (#5275)
- Fix missing abstract withdrawal notification (#5281)
- Fix downloading files from editables without a published revision (#5290)
- Do not mark participants with deleted/inactive registrations as registered in participant roles list (#5308)
- Do not enforce personal token name uniqueness across different users (#5317)
- Fix last modification date not updating when an abstract is edited (#5325)
- Fix a bug with poster and badge printing in unlisted events (#5322)
🔧 Internal Changes
- Add
category-sidebartemplate hook and blocks around category sidebar sections (#5237, thanks @OmeGak) - Add
event.reminder.before_reminder_make_emailsignal (#5242, thanks @vasantvohra) - Add
plugin.interceptable_functionsignal to intercept selected function calls (#5254)
v3.1
💡 Blog Post
We published a blog post summarizing the most relevant changes for end users.
🏆 Major Features
- Category managers now see a log of all changes made to their category in a category log (similar to the event log). This log includes information about all events being created, deleted or moved in the category (#2809, #5029)
- Besides letting everyone create events in a category or restricting it to specific users, categories now also support a moderation workflow which allows event managers to request moving an event to a category. Only once a category manager approves this request, the event is actually moved (#2057, #5013)
- Admins now have the option to enable "Unlisted events", which are events that are not (yet) assigned to a category. Such events are only accessible to its creator and other users who have been granted access explicitly, and do not show up in any category's event listing (#4294, #5055, #5023, #5095)
🎉 Improvements
- Send event reminders as individual emails with the recipient in the To field instead of using BCC (#2318, #5088)
- Let event managers assign custom tags to registrations and filter the list of registrations by the presence or absence of specific tags (#4948, #5091)
- Allow importing registration invitations from a CSV file (#3673, #5108)
- Show event label on category overviews and in iCal event titles (#5140, #5143)
- Let event managers view the final timetable even while in draft mode (#5141, #5145)
- Add option to export role members as CSV (#5147, #5156)
- Include attachment checksums in API responses (#5084, #5169, thanks @avivace)
- iCalendar invites now render nicely in Outlook (#5178)
- Envelope senders for emails can now be restricted to specific addresses/domains using the
SMTP_ALLOWED_SENDERSandSMTP_SENDER_FALLBACKconfig settings (#4837, #2224, #1877, #5179) - Allow filtering the contribution list based on whether any person (speaker or author) has registered for the event or not (#5192, #5193)
- Add background color option and layer order to badge/poster designer items (#5139, thanks @SegiNyn)
- Allow external users in event/category ACLs (#5146)
🐛 Bugfixes
- Fix
CUSTOM_COUNTRIESnot overriding names of existing countries (#5183) - Fix error dialog when submitting an invited abstract without being logger in (#5200)
- Fix category picker search displaying deleted categories (#5197, #5203)
- Fix editing service API calls using the service token (#5170)
- Fix excessive retries for Celery tasks with a retry wait time longer than 1 hour (#5172)
v3.0.3
⚠️ Security fixes
🎉 Improvements
- Support TLS certificates for SMTP authentication (#5100, thanks @dweinholz)
- Add CSV/Excel contribution list exports containing affiliations (#5114, #5118)
- Include program codes in contribution PDFs and spreadsheets (#5126)
- Add an API for bulk-assigning contribution program codes programmatically (#5115, #5120)
- Add layout setting to show videoconferences on the main conference page (#5124)
🐛 Bugfixes
- Fix certain registration list filters (checkin status & state) being combined with OR instead of AND (#5101)
- Fix translations not being taken into account in some places (#5073, #5105)
- Use correct/consistent field order for personal data fields in newly created registration forms
- Remove deleted registration forms from ACLs (#5130, #5131, thanks @jbtwist)
🔧 Internal Changes
- Truncate file names to 150 characters to avoid hitting file system path limits (#5116, thanks @vasantvohra)
v3.0.2
🐛 Bugfixes
- Fix JavaScript errors on the login page which caused problems when using multiple form-based login methods (e.g. LDAP and local Indico accounts)
v3.0.1
🎉 Improvements
- Allow filtering abstracts by custom fields having no value (#5033, #5034)
- Add support for syncing email addresses when logging in using external accounts (#5035)
- Use more space-efficient QR code version in registration tickets (#5052)
- Improve user experience when accessing an event restricted to registered participants while not logged in (#5053)
- When searching external users, prefer results with a name in case of multiple matches with the same email address (#5066)
- Show program codes in additional places (#5075)
- Display localized country names (#5070, #5076)
🐛 Bugfixes
- Show correct placeholders in date picker fields (#5022)
- Correctly preselect the default currency when creating a registration form
- Do not notify registrants when a payment transaction is created in "pending" state
- Keep the order of multi-choice options in registration summary (#5020, #5032)
- Correctly handle relative URLs in PDF generation (#5042, #5044)
- Render markdown in track descriptions in PDF generation (#5043, #5044)
- Fix error when importing chairpersons from an existing event (#5047)
- Fix broken timetable entry permalinks when query string args are present (#5049)
- Do not show "Payments" event management menu entry for registration managers (#5072)
- Replace some hardcoded date formats with locale-aware ones (#5059, #5071)
- Clone the scientific program description together with tracks (#5077)
- Fix database error when importing registrations to an event that already contains a deleted registration form with registrations (#5078)
🔧 Internal Changes
- Add
event.before_check_registration_emailsignal (#5021, thanks @OmeGak) - Do not strip image maps in places where HTML is allowed (#5026, thanks @bpedersen2)
- Add
event.registration.after_registration_form_clonesignal (#5037, thanks @vasantvohra) - Add
registration-invite-optionstemplate hook (#5045, thanks @vasantvohra) - Fix Typeahead widget not working with extra validators (#5048, #5050, thanks @jbtwist)
v3.0
Note that we only list the changes since 3.0rc2 here. Please make sure to also check the changelogs for 3.0rc1 and 3.0rc2.
🏆 Major Features
- Add system notices which inform administrators about important things such as security problems or outdated Python/Postgres versions. These notices are retrieved once a day without sending any data related to the Indico instance, but if necessary, this feature can be disabled by setting
SYSTEM_NOTICES_URL = Noneinindico.conf(#5004) - It is now possible to use SAML SSO for authentication without the need for Shibboleth and Apache (#5014)
🐛 Bugfixes
- Fix formatting and datetime localization in various PDF exports and timetable tab headers (#5009)
- Show lecture speakers as speakers instead of chairpersons on the participant roles page (#5008)
🔧 Internal Changes
v3.0rc2
Since this is a prerelease, you need to use pip's --pre switch to install it, ie pip install --pre indico (same for indico-plugins)
🏆 Major Features
- Add support for personal tokens. These tokens act like OAuth tokens, but are associated with a specific user and generated manually without the need of doing the OAuth flow. They can be used like API keys but with better granularity using the same scopes OAuth applications have, and a single user can have multiple tokens using various scopes. By default any user can create such tokens, but admins can restrict their creation. (#1934, #4976)
🎉 Improvements
- Add abstract content to the abstract list customization options (#4968)
- Add CLI option to create a series (#4969)
- Users cannot submit multiple anonymous surveys anymore by logging out and in again (#4693, #4970)
- Improve reviewing state display for paper reviewers (#4979, #4984)
- Make it clearer if the contributions/timetable of a conference are still in draft mode (#4977, #4986)
- Add "send to speakers" option in event reminders (#4958, #4966, thanks @Naveenaidu)
- Allow displaying all events descending from a category (#4982, #4983, thanks @OmeGak and @openprojects).
- Add an option to allow non-judge conveners to update an abstract track (#4989)
🐛 Bugfixes
- Fix errors when importing events containing abstracts or event roles from a YAML dump (#4995)
- Fix sorting abstract notification rules (#4998)
- No longer silently fall back to the first event contact email address when sending registration emails where no explicit sender address has been configured (#4992, #4996, thanks @vasantvohra)
- Do not check for event access when using a registration link with a registration token (#4991, #4997, thanks @vasantvohra)
v3.0rc1
💡 Blog Post
We published a blog post summarizing the most relevant changes for end users.
⚠️ Python 3 🐍
This major release starts the new Python-3-only era of Indico. 🐍
Due to the massive changes that come with this, make sure to read the 2.x to 3.0 upgrade guide if you plan to upgrade an existing instance. Also, keep in mind that this is a prerelease, and things may be broken. 💥
While we consider it very stable (it's running in production on the main CERN Indico instance for about a month now), we do not officially encourage you to upgrade your production instances yet.
But if you are going to do it anyway (we know you want to!), please read that guide and have a backup. 💾
Since this is a prerelease, you need to use pip's --pre switch to install it, ie pip install --pre indico (same for indico-plugins)
🏆 Major Features
- There is a new built-in search module which provides basic search functionality out of the box, and for more advanced needs (such as full text search in uploaded files) plugins can provide their own search functionality (e.g. using ElasticSearch). (#4841)
- Categories may now contain both events and subcategories at the same time. During the upgrade to 3.0 event creation is automatically set to restricted in all categories containing subcategories in order to avoid any negative surprises which would suddenly allow random Indico users to create events in places where they couldn't do so previously. (#4679, #4725, #4757)
- The OAuth provider module has been re-implemented based on a more modern library (authlib). Support for the somewhat insecure implicit flow has been removed in favor of the code-with-PKCE flow. Tokens are now stored more securely as a hash instead of plaintext. For a given user/app/scope combination, only a certain amount of tokens are stored; once the limit has been reached older tokens will be discarded. The OAuth provider now exposes its metadata via a well-known URI (RFC 8414) and also has endpoints to introspect or revoke a token. (#4685, #4798)
- User profile pictures (avatars) are now shown in many more places throughout Indico, such as user search results, meeting participant lists and reviewing timelines. (#4625, #4747, #4939)
🎏 Internationalization
- New locale: English (United States) 🇺🇸
- New translation: Turkish 🇹🇷
🎉 Improvements
- Use a more modern search dialog when searching for users (#4674, #4743)
- Add an option to refresh event person data from the underlying user when cloning an event (#4750, #4760)
- Add options for attaching iCal files to complete registration and event reminder emails (#1158, #4780)
- Use the new token-based URLs instead of API keys for persistent ical links and replace the calendar link widgets in category, event, session and contribution views with the more modern ones used in dashboard (#4776, #4801)
- Add an option to export editables to JSON (#4767, #4810)
- Add an option to export paper peer reviewing data to JSON (#4767, #4818)
- Passwords are now checked against a list of breached passwords ("Have I Been Pwned") in a secure and anonymous way that does not disclose any data. If a user logs in with an insecure password, they are forced to change it before they can continue using Indico (#4817)
- Failed login attempts now trigger rate limiting to prevent brute-force attacks (#1550, #4817)
- Allow filtering the "Participant Roles" page by users who have not registered for the event (#4763, #4822)
- iCalendar exports now include contact data, event logo URL and, when exporting sessions/contributions, the UID of the related event. Also, only non-empty fields are exported. (#4785, #4586, #4587, #4791, #4820)
- Allow adding groups/roles as "authorized abstract submitters" (#4834)
- Direct links to (sub-)contributions in meetings using the URLs usually meant for conferences now redirect to the meeting view page (#4847)
- Use a more compact setup QR code for the mobile Indico check-in app; the latest version of the app is now required. (#4844)
- Contribution duration fields now use a widget similar to the time picker that makes selecting durations easier. (#2462, #4873)
- Add new meeting themes that show sequential numbers instead of start times for contributions (#4899)
- Remove the very outdated "Compact style" theme (it's still available via the
themes_legacyplugin) (#4900, #4899) - Support cloning surveys when cloning events (#2045, #4910)
- Show external contribution references in conferences (#4928, #4933)
- Allow changing the rating scale in abstract/paper reviewing even after reviewing started (#4942)
- Allow blacklisting email addresses for user registrations (#4644, #4946)
🐛 Bugfixes
- Take registrations of users who are only members of a custom event role into account on the "Participant Roles" page (#4822)
- Fail gracefully during registration import when two rows have different emails that belong to the same user (#4823)
- Restore the ability to see who's inheriting access from a parent object (#4833)
- Fix misleading message when cancelling a booking that already started and has past occurrences that won't be cancelled (#4719, #4861)
- Correctly count line breaks in length-limited abstracts (#4918)
- Fix error when trying to access subcontributions while event is in draft mode
- Update the user link in registrations when merging two users (#4936)
- Fix error when exporting a conference timetable PDF with the option "Print abstract content of all contributions" and one of the abstracts is too big to fit in a page (#4881, #4955)
- Emails sent via the Editing module are now logged to the event log (#4960)
- Fix error when importing event notes from another event while the target event already has a deleted note (#4959)
🔧 Internal Changes
- Require Python 3.9 🐍 - older Python versions (especially Python 2.7) are no longer supported
confIdhas been changed toevent_idand the corresponding URL path segments now enforce numeric data (and thus pass the id as a number instead of string)CACHE_BACKENDhas been removed; Indico now always uses Redis for caching- The integration with flower (celery monitoring tool) has been removed as it was not widely used, did not provide much benefit, and it is no longer compatible with the latest Celery version
session.usernow returns the user related to the current request, regardless of whether it's coming from OAuth, a signed url or the actual session (#4803)- Add a new
check_password_securesignal that can be used to implement additional password security checks (#4817) - Add an endpoint to let external applications stage the creation of an event with some data to be pre-filled when the user then opens the link returned by that endpoint (#4628, thanks @adl1995)
v2.3.5
⚠️ Security fixes
- Fix XSS vulnerabilities in the category picker (via category titles), location widget (via room and venue names defined by an Indico administrator) and the "Indico Weeks View" timetable theme (via contribution/break titles defined by an event organizer). As neither of these objects can be created by untrusted users (on a properly configured instance) we consider the severity of this vulnerability "minor" (#4897)
🎏 Internationalization
- New translation: Polish 🇵🇱
- New translation: Mongolian 🇲🇳
🎉 Improvements
- Add an option to not disclose the names of editors and commenters to submitters in the Paper Editing module (#4829, #4865)
🐛 Bugfixes
- Do not show soft-deleted long-lasting events in category calendar (#4824)
- Do not show management-related links in editing hybrid view unless the user has access to them (#4830)
- Fix error when assigning paper reviewer roles with notifications enabled and one of the reviewing types disabled (#4838)
- Fix viewing timetable entries if you cannot access the event but a specific session inside it (#4857)
- Fix viewing contributions if you cannot access the event but have explicit access to the contribution (#4860)
- Hide registration menu item if you cannot access the event and registrations are not exempt from event access checks (#4860)
- Fix inadvertently deleting a file uploaded during the "make changes" Editing action, resulting in the revision sometimes still referencing the file even though it has been deleted from storage (#4866)
- Fix sorting abstracts by date (#4877)
🔧 Internal Changes
v2.3.4
⚠️ Security fixes
- Fix some open redirects which could help making harmful URLs look more trustworthy by linking to Indico and having it redirect the user to a malicious site (#4814, #4815)
- The
BASE_URLis now always enforced and requests whose Host header does not match are rejected. This prevents malicious actors from tricking Indico into sending e.g. a password reset link to a user that points to a host controlled by the attacker instead of the actual Indico host (#4815, GHSA-wgpj-7c2j-vfjm, CVE-2021-30185)
Note: If the webserver is already configured to enforce a canonical host name and redirects or rejects such requests, this cannot be exploited. Additionally, exploiting this problem requires user interaction: they would need to click on a password reset link which they never requested, and which points to a domain that does not match the one where Indico is running.
🎉 Improvements
- Fail more gracefully is a user has an invalid locale set and fall back to the default locale or English in case the default locale is invalid as well
- Log an error if the configured default locale does not exist
- Add ID-1 page size for badge printing (#4774, thanks @OmeGak)
- Allow managers to specify a reason when rejecting registrants and add a new placeholder for the rejection reason when emailing registrants (#4769, thanks @vasantvohra)
🐛 Bugfixes
- Fix the "Videoconference Rooms" page in conference events when there are any VC rooms attached but the corresponding plugin is no longer installed
- Fix deleting events which have a videoconference room attached which has its VC plugin no longer installed
- Do not auto-redirect to SSO when an MS office user agent is detected (#4720, #4731)
- Allow Editing team to view editables of unpublished contributions (#4811, #4812)
🔧 Internal Changes
- Also trigger the
ical-exportmetadata signal when exporting events for a whole category - Add
primary_email_changedsignal (#4802, thanks @openprojects)