Totara Release Notes

Totara TXP 16.0 is now available

 
David Curry (Core Developer)
Totara TXP 16.0 is now available
door David Curry (Core Developer) - Tuesday, 26 April 2022, 00:22 AM
Groep Totara

Hello Everyone,

I am pleased to announce that the Totara 16.0 release is now available.
This release includes:

  • Numerous improvements for system notifications
  • A new relationship for selecting perform activity participants
  • The full release of the linkedin learning integration
  • The ability to sync workspaces with audiences

Along with many more improvements and fixes, please refer to the full changelogs below.

A big thank you as well to everyone who has contributed to this release!


Kind regards,

Release Team


Release 16.0 (26th April 2022):
===============================

New features:

    TL-32888       Added modern course and activity notification events

                   Several course and activity notification events were added to the modern
                   notification system:
                   * Learner enrolled in course
                   * Learner unenrolled from course
                   * Learner completed course
                   * Learner completed activity

                   Activity completion notifications can be set up in a course or individual
                   activities. If it is set up in a course, then notifications will be sent on
                   completion of each activity within the course.

                   Note that no default notifications have been provided using these new
                   notification events. As with other modern notification events, admins can create
                   notifications in the site-level notifications interface, which will apply to all
                   courses and activities, or they can be created in individual courses or
                   activities.

    TL-33032       Added new core 'direct report' relationship for perform activity participants selection

                   In response to a number of requests we've added a new 'direct reports'
                   participant relationship.

                   This relationship selects users as participants where their manager in any job
                   assignment is a subject of the activity.

                   Of note are the associated changes made to manage closing activities at the due
                   date and managing non-participation.  See TL-33053

    TL-33093       Added modern course due date notification event to enable reminder notifications

                   A "Course due date" notification event was added to the modern notification
                   system. This allows admins to configure "reminder" notifications to be sent
                   before or after a user's due date in a course. This notification is only sent if
                   the user has not completed the course.

                   The course due date for each user is determined by the new "Due date" settings
                   found under "Completion tracking" in course settings. "Due date" can only be
                   configured when "Enable completion tracking" is enabled in the course. The due
                   date is currently used only for the purpose of notifying users, and no other
                   action occurs when the due date is reached. Additional functionality may be
                   added to it in the future.

                   Note that no default notifications have been provided using this new
                   notification event. As with other modern notification events, admins can create
                   notifications in the site-level notifications interface, which will apply to all
                   courses, or they can be created in individual courses.

    TL-33321       Added modern seminar notifications

                   Modern notification events and default notifications have been added to
                   seminars. Additionally, settings have been provided to allow either a whole site
                   or individual seminars to choose between using legacy notifications or modern
                   notifications. The combination of settings ensures that notifications cannot be
                   sent using both notification systems for the same event, preventing users from
                   receiving duplicate notifications, while allowing an easy migration path for
                   existing sites.

                   A large number of notification events have been added which allow admins to
                   configure notifications to be sent from seminars. These notification events
                   cover most use cases of the legacy notifications, and they were extended to
                   include additional use cases. Default notifications were created based on the
                   legacy notifications with enhanced clarity.

                   A site-level setting has been added to allow sites to completely disable legacy
                   notifications in seminars. When disabled, the legacy notification interfaces are
                   hidden. Legacy notifications are disabled by default on new sites, while
                   upgraded sites will continue to use legacy notifications until admins choose to
                   switch over to use the modern notifications.

                   When legacy notifications are enabled at the site level, a new setting within
                   each seminar will allow the seminar to send notifications using either the
                   legacy or modern notification systems. Admins are able to work with
                   notifications in both systems, allowing them to manually migrate customised
                   notification content from legacy notifications into modern notifications. Once
                   admins are confident that their modern notifications are configured correctly,
                   the seminar can be switched to using the modern notifications.

                   Previously, it was possible to create additional messages in the legacy
                   notification system by going to the Notifications admin page within a seminar
                   and selecting "Add". This functionality has been separated into two parts. A new
                   admin link "Ad-hoc messages" will allow admins to create and send messages that
                   were previously configured with Scheduling set to "Send now", while messages
                   that were previously configured with Scheduling set to "Send later" can be
                   created using the modern notification system. The "Ad-hoc messages" link is
                   available even when legacy notifications are completely disabled.

                   Sending notifications to third-party email recipients works differently in
                   modern notifications. The list of recipients is still configured in each
                   seminar, but now individual notifications must be created as required with the
                   recipient set to "Third-party email recipients". No default notifications are
                   provided which are set to be sent to the third-party email addresses.

                   iCal attachments work differently in modern seminar notifications. When a
                   seminar event contains multiple sessions, a single notification will be sent
                   with one iCal attachment for each session. The legacy "One message per date"
                   setting does not affect this.

    TL-33426       LinkedIn Learning content marketplace activities can be added to courses directly.

                   Previously it was only possible to create single-activity courses containing
                   LinkedIn Learning activities. It is now possible to choose the 'Content
                   Marketplace' activity when editing an existing multi-activity course, and select
                   a LinkedIn Learning item to insert as an activity.

                   This option appears once LinkedIn Learning has been configured and the content
                   catalog has been synced with your Totara site.

    TL-33474       LinkedIn Learning content marketplace is now out of beta

                   The LinkedIn Learning feature is now fully available to all customers. This
                   marketplace requires a LinkedIn Learning professional subscription. It supports
                   browsing, selecting and importing LinkedIn Learning content into Totara,
                   launching LinkedIn Learning courses and tracking progress from LinkedIn Learning
                   directly within those courses in Totara.

                   Also available in 15.3 and later releases.

    TL-33846       Workspaces can now be fully synced with Audiences

                   A new "Add Audiences" option now replaces the "Bulk Add Audiences" option in the
                   Workspaces owner menu. This option is available to anyone with the capability to
                   edit audiences.

                   When used, all members of the selected Audiences will be added to the Workspace
                   initially. As membership in the Audience changes, members will be added and
                   removed from the assigned Workspaces automatically.

                   Additionally, the notification sent to users when they are added to a Workspace
                   (either by an Audience or by a Workspace Owner directly) can now be edited or
                   disabled on the Admin Notifications page.

Important:

    TL-34110       Fixed the migration of evidence to learning plan relationships when upgrading to TXP

                   Evidence was redesigned in Totara 13, and an entirely new data structure was
                   adopted to benefit the evidence feature set. During the upgrade to Totara 13
                   (that all sites must go through during the upgrade process)  Evidence data is
                   migrated from the pre-13 structure to the new structure.

                   The migration moves data item per item, sequentially. Due to a bug in the
                   migration process, links between an evidence item and a user’s learning plan
                   may be broken, with evidence items being incorrectly related to the incorrect
                   learning plan. This mis-mapping can cause evidence items belonging to one user
                   to end up being linked to the learning plan of another user. This affects
                   historic data only, as all future relations are formed correctly post upgrade.

                   The migration has now been fixed to ensure the relationship between an evidence
                   item and a learning plan is correctly maintained.

                   For sites who have already upgraded the following SQL query can be used to
                   determine if your site was affected.
                   If a number greater than 0 is returned then please seek support from us and we
                   will assist you in confirming the issue, and in supporting you to recover the
                   lost relationships.

                   SELECT COUNT(dper.id)
                   FROM mdl_dp_plan_evidence_relation dper
                   JOIN mdl_totara_evidence_item tei ON tei.id = dper.evidenceid
                   JOIN mdl_dp_plan dp ON dp.id = dper.planid
                   WHERE dp.userid != tei.user_id;

    TL-28247       Updated library GraphQL to version 14.11.3 (includes breaking changes)

                   This patch updates the webonyx GraphQL library to version 14.11.3 which comes
                   with breaking changes.

                   The biggest change is that now all scalar types are validated with strict
                   coercion. This means loose variable values, i.e. passing a number as string
                   instead of an  expected integer would now throw an exception. Previously this
                   was accepted and internally converted.

                   If you have created or modified any GraphQL queries or mutations please make
                   sure that the scalar types are passed correctly.

                   Also some classes got renamed or have changed signatures.

                   All important changes are outlined here in detail:
                   https://github.com/webonyx/graphql-php/blob/v14.0.0/UPGRADE.md

Security issues:

    TL-30921       Hardened security around data serialization in core.

                   Several places in Totara will use the PHP serialize/unserialize functions to
                   persist data in different locations. The following places have been changed to
                   increase security by limiting what kind of data can be used:
                   * The language customisation tool now stores the filters as JSON encoded strings
                   across page requests.
                   * The Flickr tag block no longer allows objects to be instantiated when the
                   results are parsed.
                   * The $CFG->custom_context_classes option no longer allows objects to be
                   instantiated.
                   * The XMLDB Editor stores only the known XMLDB object types across page
                   requests.

    TL-33756       Improved validation of badge criteria to prevent SQL injection

                   Improved the validation of badge criteria in order to ensure individual criteria
                   would correctly fail form validation.

                   Also available in 12.41 and later releases.

Performance improvements:

    TL-31099       Improved performance of the record of learning course report source

                   Previously the report source for the "Record of learning: Course" has been using
                   a poorly performing base query. This patch introduces a new table which holds
                   the record of learning records for each user and is now used as the base for the
                   report. This will improve the performance of the report considerably.

                   The new table will be automatically filled with the records when a site is
                   upgraded. This can take a few minutes and depends on the size of the database.
                   The table is also updated when users are enrolled in courses, courses are
                   completed or courses are added to learning plans.

                   A new task "\totara_plan\task\update_record_of_learning_task" will run every 10
                   minutes to keep the new table in sync. In most cases the table will
                   automatically be updated through event observers but in rare cases the task will
                   need to run to keep the table up-to-date.

                   If you experience problems with the Record of Learning report and data not being
                   displayed correctly you can adjust the frequency of the task to your needs. The
                   runtime of the task depends on the size of the database but so we recommend
                   testing its runtime (by running it individually) on the individual site and take
                   this into account when adjusting the frequency.

                   Apart from the base table the report itself is still working in a fully
                   backwards compatible way so any adjustments or embedded reports based on top of
                   it will continue to work as before.

                   Also available in 15.2 and later releases.

    TL-32776       Improved the performance of the events report source query in seminars.

                   Also available in 15.2 and later releases.

    TL-32858       Improved the performance of the user content restriction for direct and temporary reports in the report builder

                   Also available in 15.2 and later releases.

    TL-33003       Improved general performance of report exports

                   Previously when exporting a report or displaying a large number of records in a
                   report display classes for columns were determined for each column and for each
                   row. This lead to a lot of unnecessary class resolution calls which can have a
                   noticeable impact on the performance of the export or display of the report.
                   This patch fixes this and only determines the display class for each column only
                   once.

                   In addition the display class for relationships have been improved. They now
                   cache the result of loading a relationship.

                   Also available in 15.2 and later releases.

    TL-33019       Improved performance of the audience report builder content restriction

                   Also available in 15.1 and later releases.

    TL-33048       Implemented a cache for \core_component::get_namespace_classes() to improve performance

                   Also available in 15.2 and later releases.

    TL-33071       Improved performance of the report used in the completion editor

                   Also available in 15.2 and later releases.

    TL-33222       Improved performance of capability checks for managing performance activities or reporting on user's responses

                   Previously on a large site the performance of the user activity page could have
                   been severely affected due to the use of the has_capability_in_any_context()
                   function which is very complex and does not scale very well. 

                   In places where we don't necessarily need to call this function we changed it to
                   an alternative approach. In other places we optimised the underlying queries so
                   that they can perform as fast as possible. On large sites the reports to manage
                   participation or report on performance activity responses might still have
                   slightly longer loading times but this should be in the normal range for complex
                   reports.

                   If you are using \mod_perform\rb\util::get_manage_participation_sql() or
                   \mod_perform\rb\util::get_report_on_subjects_sql() in your custom code please
                   note that the query you are using this function in has to join the context table
                   with the user id and the user context level. This change was necessary to reduce
                   the number or records the query has to process.

                   Also available in 15.2 and later releases.

    TL-33252       Improved the performance of the navigation by optimising notification class loading

                   This improves the performance of most pages throughout the site, but is most
                   notable in development and testing environments where debugging has been enabled
                   or caching has been disabled.
                   For production sites it will still have an impact, but it will be less
                   noticeable.

                   Also available in 15.2 and later releases.

    TL-34017       Searching for a user while sharing a resource now batches keyboard presses

                   Also available in 15.6 and later releases.

Improvements:

    TL-14090       Introduced the ability for privileged users to archive and reset an individuals progress in a course

                   This change introduces two new capability controlled opt-in improvements, and
                   improved the access control for the existing archive all users completion
                   functionality within courses.

                   This allows a user who has the 'totara/core:archivemycourseprogress' capability
                   to archive and reset their progress in a course.
                   In order to perform the action the user must hold the required capability,
                   completion must be enabled for the site and for the course, and the course must
                   not be a part of either a program or a certification, and the user must hold a
                   completion tracked role within the course.
                   A user with this capability will have a see a link to 'Reset this course' within
                   the course administration block when viewing the course.
                   The new capability is not given to any roles by default.

                   It also allows a user who has the 'totara/core:archiveusercourseprogress'
                   capability to archive and reset the progress of another user within a course.
                   In order to perform the action the user must hold the required capability,
                   completion must be enabled for the site and for the course, the course must not
                   be a part of a program or a certification, and the user whose progress is being
                   archived and reset must hold a completion tracked role within the course.
                   A new action has been added to the course completion report to enable this.
                   The new capability is not given to any roles by default.

                   Finally, the existing archive and reset completion functionality now has a new
                   dedicated capability 'totara/core:archiveenrolledcourseprogress'.
                   Previously users were required to have the ability to delete the course in order
                   to archive and reset progress for all enrolled users.
                   To ensure backwards compatibility during upgrades when the new capability is
                   installed roles that hold the moodle/course:delete capability are given this
                   permission.

                   Also available in 15.1 and later releases.

    TL-22564       Standardised up and down chevrons
    TL-25962       Added the ability to remove a link from Weka while maintaining the link text

                   Also available in 15.6 and later releases.

    TL-27465       Page style improvements made on the 'your workspaces' page

                   Made several minor cosmetic improvements to the 'your workspaces' page such as
                   white spacing and content alignment

    TL-28408       Amended content spacing on the manage performance activities tabs
    TL-30456       Added a way to define a common plugin name for notification grouping

                   Prior to this patch, the grouping of notifications in the modern notification
                   administration was done by the language string for the notifications' component
                   names. With this patch, this name can be overridden for a component by adding a
                   language string with the key 'pluginname_totara_notification'.

                   This has been applied to the program component whose notifications are now
                   grouped under 'Program', replacing the previous name 'Program management'.

                   Also available in 15.3 and later releases.

    TL-30666       Resized the default thumbnail images for course, program, certification and resource in Ventura theme 
    TL-30928       Changed webservice exception type from servicenotavailable to sessionerroruser for call_external_function() when the user is not logged in
    TL-31252       Options to manage relationship participant instances dynamically

                   Participants are added to performance activities as individuals associated with
                   Performance activity roles e.g. peer, or as formal relationship roles e.g.
                   manager, appraiser.  The relationship roles are defined within the job
                   assignments for the subject.

                   As changes occur to personnel in an organisation people move around in their
                   roles.  Some organisations mandate regular changes of management.

                   {color:#172b4d}Currently changing participation in an activity is a manual
                   task.{color}

                   {color:#172b4d}These changes provide options for Admins to define how users
                   exiting activity relations and roles will be have their participant instances
                   closed and or hidden (or not) from an activity.  And that users entering
                   activity relationships and roles will be have participant instances added to the
                   activity.{color}

                   There are two new options in the 'Perform settings' section of the feature
                   configuration:
                   * Enable role change participant instance creation
                   When enabled, this will create a new participant instance for existing open
                   activities when a new user enters a relationship for that activity.

                   * Enable role change participant instance closure
                   When enabled, this will close participant instances for open activities when a
                   user leaves a relationship for that activity.

                   {color:#172b4d}These settings can be applied Globally to all activities in the
                   Perform settings.{color}

                   {color:#172b4d}Admins can override these default settings in an individual
                   activity's config.  {color}

                   The intention is that these transitions can be largely automated

    TL-31523       When a LinkedIn Learning course is created from a specific category, the catalog import page now uses the category as the default category for selected items.
    TL-31706       Added OAuth2 authentication to outgoing SMTP mail service

                   With this patch outgoing email connections can now be configured using the
                   XOAuth2 protocol. To make use of this protocol you will need to configure an
                   OAuth2 service with your provider and connect with a system account. Afterwards
                   the OAuth2 service can be chosen on the Outgoing email configuration page.

                   Also available in 15.1 and later releases.

    TL-31869       Improved form error notifications when editing programs

                   Also available in 15.3 and later releases.

    TL-32087       An administrator can delete a client provider on client provider settings

                   Also available in 15.2 and later releases.

    TL-32088       Oauth2 providers can now be added via the user interface

                   Oauth2 providers can be added to the system by administrators. As part of this
                   change the task that automatically created a LinkedIn Learning provider has been
                   removed - the administrator must now manually add the provider when setting up
                   the integration.

                   Also available in 15.2 and later releases.

    TL-32118       Updated data type of fields in Workspaces Engagement report to make them graphable

                   The updated fields are:
                   * Discussions
                   * Comments in discussions
                   * Linked playlists
                   * Linked resources
                   * Files
                   * Members

                   Also available in 15.2 and later releases.

    TL-32167       Updated performance activities page filters and current tab to be persistent across page loads
    TL-32253       Improved behaviour of closing attempts for timed quizzes

                   This pulls in 5 patches for the quiz module from Moodle:
                   MDL-65864 question engine: fix re-saving a new usage
                   MDL-54907 quiz generator: defaults should match a new Moodle install
                   MDL-66685 questions: should able to save an empty question usage
                   MDL-54907 quiz: better timefinish for attempts finished asynchronously
                   MDL-68970 quiz: prevent page caching during attempts

                   Also available in 15.3 and later releases.

    TL-32343       UI improvements on indentation and hover state of the administration tree component

                   Also available in 15.2 and later releases.

    TL-32356       Report Builder description of the report is now displayed when exporting to PDF
    TL-32367       Added a new option "--is-pending" to the upgrade cli script

                   The new option enables admins to detect whether an upgrade is necessary without
                   actually running the upgrade. This can be useful for pre-upgrade checks or
                   automation.

                   Also available in 15.2 and later releases.

    TL-32473       Allow manual deletion of instances of a performance activity

                   In 15.4 we added the ability to delete subjects and participants from a
                   performance activity.  Because this addressed a privacy risk the change has
                   been backported to the last stable version of all major releases, so that it is
                   available to all version of Perform.

                   In version 16 we have made a small design improvement to shift all the
                   participation controls into an ellipsis menu, so this is complies with the
                   Totara visual design.

                   Also available in 15.4 and later releases.

    TL-32490       Added a new filter to show or remove already imported courses in the content marketplace catalog import

                   Also available in 15.2 and later releases.

    TL-32592       Implemented truncating the title of the performance activity in the task card on the activity page

                   Also available in 15.2 and later releases.

    TL-32624       Improved workflow for users requesting to join a private workspace, and a new notification to users if the request was declined

                   * Added pending request status and 'cancel' button to workspace card in Find
                   workspaces
                   * Added option for users to include a personal message to workspace owner in the
                   request
                   * Added option for workspace owner to include a personal message when declining
                   a request
                   * Added a new notification to inform users when their request was declined

    TL-32718       Added the operation name to single GraphQL URLs for easier debugging
    TL-32728       Improved the Atto editor auto-sizing to match the textarea(s) it replaces
    TL-32756       Added a progress bar to LinkedIn Learning activities

                   This progress bar will reflect progress towards completion of the external
                   activity, as long as the customer's LinkedIn Learning account has been
                   configured to send progress events.

    TL-32788       Added additional spacing when viewing a forum within a course

                   Also available in 15.2 and later releases.

    TL-32824       Added the ability for administrators to see a list of all OAuth 2 providers 

                   Also available in 15.2 and later releases.

    TL-32870       Added a new 'For use in' column to the 'Manage evidence types' report source

                   This column indicates which types can be used in completion record imports, or
                   while adding evidence manually. This column will be added to default reports for
                   new installs, upgrading sites will have to add this column manually or reset the
                   report.

    TL-33005       Added the ability to authenticate incoming email using OAuth2

                   Also available in 15.3 and later releases.

    TL-33100       Improved the display of individual notifications while modifying

                   Previously individual notifications were organised in a table. Now cards are
                   used instead of that table.

    TL-33113       Converted notification override checkbox to a toggle
    TL-33118       Added an information notification to the manage performance activities page while trying to view section elements without responding participants
    TL-33141       When an administrator manually overrides LinkedIn Learning activity completion to complete, the progress bar on the activity now shows as 100%

                   Also available in 15.4 and later releases.

    TL-33144       Improved the spacing between components on the LinkedIn Learning course activity page

                   Also available in 15.4 and later releases.

    TL-33187       Added an accessible label to the saved search dropdown in reports

                   Also available in 15.2 and later releases.

    TL-33212       Updated HR import completed log entries to include the element name

                   The element name associated with the HR Import run is now shown to the user.

                   Also available in 15.3 and later releases.

    TL-33219       Added a new ‘totara/oauth2:manageproviders’ capability to the system administrator default role that allows them to manage the OAuth2 providers

                   Also available in 15.2 and later releases.

    TL-33298       Changed legacy user dialogues to display fields enabled in 'showuseridentity' setting  

                   Previously the dialogue to select users in the following locations did not take
                   the fields configured in the 'showuseridentity' setting into account but always
                   showed only the full name and the email address of the users:

                   * Job assignments (choosing appraiser, manager and temporary manager)
                   * Seminars (choosing approvers and internal user for facilitator)
                   * Program assignment (choosing an individual to assign)
                   * Scheduled report (Choose system users to send report to)
                   * Feeback 360 - legacy (Choose recipients for feedback request)

                   With this patch all these dialogues are now showing the additional fields
                   configured in the 'showuseridentity' setting. Additional fields like idnumber or
                   department can now be displayed as part of the user information to help
                   identifying individual users.

                   If a site has not changed this setting nothing changes as email is already
                   enabled by default. If the setting deviates from the default then after upgrade
                   additional information might be shown to users who have the
                   "moodle/site:viewuseridentity" capability. This is consistent to other parts of
                   the system.

    TL-33302       Moved the 'audience-based visibility' setting away from the 'enrolled audiences' setting on the 'Edit course' page

                   This is to help prevent configuration errors due to their associated labels.

                   Also available in 15.3 and later releases.

    TL-33304       Improved the wrapping of page layouts when titles contain long words

                   Also available in 15.3 and later releases.

    TL-33378       Improved the use of browser's 'back' button in resources to lead back to the 'library' tab
    TL-33419       Added more user placeholder options to modern notifications

                   This change extends the list of user placeholders in notifications by adding: 
                   * User's ID Number.
                   * User's address.
                   * User's description.
                   * User's institution.
                   * User's language.
                   * User's Skype ID.
                   * User's phone number.
                   * User's mobile phone number.
                   * User's URL

    TL-33442       Added success notification toasts for all UI toggles on manage performance activity notifications tab
    TL-33533       Gave more visual prominence to the performance activity participant selection banner
    TL-33547       Improved layout of labels in legacy course activity adders

                   Also available in 15.5 and later releases.

    TL-33550       Added support for completion archiving to lesson modules

                   Previously the lesson module did not support completion archiving, this meant
                   that if you used the "Reset completions" functionality under "Course
                   administration" that lesson data persisted. Support for this has been added and
                   now if you reset completions for a course it will also remove lesson timing
                   data, lesson attempt data, and lesson overrides for completed users in the
                   course.

                   Also available in 15.5 and later releases.

    TL-33566       Added list columns to the My Bookings report

                   Three new columns have been added to the 'My Bookings' report to display the
                   facilitators, rooms and assets linked to a specific session as lists instead of
                   adding duplicate rows for a single session that have multiple facilitators,
                   rooms or assets.

                   Also available in 15.6 and later releases.

    TL-33595       Fixed goals not working when multi tenancy was enabled

                   Previously, goals functionality was not fully working when multi tenancy was
                   enabled, especially if isolation mode was enabled. With this patch goals are now
                   working within the restrictions of multi tenancy. This means that management of
                   company goals can only be done with system permissions by system users. Company
                   goal assignment and personal goals management can be done by tenant users or
                   their managers (depending on how the permissions are set up). There are some
                   restrictions if isolation is enabled, the viewing of company goals or goal
                   frameworks is not possible as tenant users and the links to these pages are not
                   shown in this case.

                   Also available in 15.5 and later releases.

    TL-33654       Added information about changes to appraiser and temporary manager to job assignment events

                   Added data for old & new appraiser as well as old & new temporary manager to the
                   created, updated and deleted events for job assignments . This is to enable
                   observers to detect changes to a job assignment's appraiser or temporary
                   manager.

    TL-33679       Changed form action to 'GET' for manage dashboard single button

                   Also available in 15.6 and later releases.

    TL-33733       Add additional options to instance creation reference dates on a performance activity to support creating instances based on the closure of another activity.

                   The new options are:
                   * Close date of another activity instance
                   * Close or completion date of another activity instance (whichever is sooner)

    TL-33734       Added closure trigger types for repeating instances on performance activities

                   Added closure trigger types for repeating instances and updated the UI to
                   accommodate this change.

                   This adds a 'closed_at' column for the perform_subject_instance table. The
                   upgrade process populates this column with the latest subject instance closed
                   event timestamps from the logstore_standard_log table if there are any.
                   Otherwise the column value is the upgrade time.

    TL-33735       Updated the UI of the 'activity job assignment-based instances' setting on manage performance activities page
    TL-33737       Updated the UI of the due date setting on manage performance activities page

                   Moved the enable toggle within the due date block and refactored the component
                   to handle it's own validation

    TL-33871       Added notification preference and recipient/target user to resolver's file attachment request
    TL-33970       Added appropriate CSS class to topics format General section when header colour is enabled

                   Also available in 15.6 and later releases.

    TL-33975       Increased the top and bottom margin of the 'Load more' button in the Adder.vue component

                   Also available in 15.6 and later releases.

    TL-33977       Added a visual loading state to the create button of the performance activity creation modal
    TL-33992       Changed button text on confirm model in playlist
    TL-34102       The totara_mobile_certification query now returns a 'viewable' flag for all courses in certifications

                   Also available in 15.6 and later releases.

    TL-34113       Fixed that workspaces show as Courses in Audience under enrolled Learning tab
    TL-34114       Updated the OriginalSpaceCard TUI component to focus the action button when closing modals on the "Find workspaces" page

                   Also available in 15.6 and later releases.

Accessibility improvements:

    TL-31867       Improved keyboard accessibility when using the Dropdown menu

Bug fixes:

    TL-23318       Catalog cards are now closer in appearance to engage resource cards
    TL-27410       Removed the automatic scroll when clicking on the edit pencil on a perform element
    TL-30977       Fixed an issue where the redisplay element incorrectly showed ‘your response’ when the current user hasn’t provided a response
    TL-32766       Update user progress when a user is enrolled in a course via external content marketplace
    TL-33390       Fixed an issue where the browser back and forward buttons didn't update the performance activity filters
    TL-33449       Fixed error when closing subject instances after a session timeout
    TL-33972       Fixed class path for grading report unit test
    TL-33982       The modal now closes immediately when removing assignments from a performance activity
    TL-33990       Fixed joined dropdown in workspace to not being disabled
    TL-34004       Fixed that the request and decline message modal will close accidentally
    TL-34005       Added additional space between request and buttons when viewing requests to join a workspace
    TL-34016       Improved assign users modal loading state
    TL-34022       Fixed hyphenation issue and refactored engage workplace request
    TL-34031       Fixed resource styling at smaller viewports
    TL-34050       Added loading state to existing resource modal
    TL-34066       Updated OriginalSpaceCard.vue to dismiss the confirmation modal after leaving a workspace from the 'Find workspaces' page
    TL-34074       Fixed Grades: Outcomes page formatting
    TL-34096       Changed default background colour in email template to Ventura default

Technical changes:

    TL-28678       Removed deprecated functions in javascript-static

                   There were a number of functions that were deprecated in Totara 12 which were
                   throwing a JavaScript error or warning when called. These have now been removed

    TL-30246       Updated the profileimage field in the mobile user_own_profile query to return null when empty
    TL-32041       Added configurable number filter to report builder

                   This filter allows filtering numerical data using an operator that is specified
                   in the report source.

                   Also available in 15.1 and later releases.

    TL-32155       Added ability to disable grouping for a column in a report source

                   Also available in 15.1 and later releases.

    TL-32613       Improved tile layout on workflow manager page

                   Also available in 15.1 and later releases.

    TL-32764       Added a new 'get_progress' function to the activity course completion criterion

                   The progress of an activity course completion criterion is now extracted from
                   the 'progress' field where the information is available.

                   Also available in 15.2 and later releases.

    TL-32840       The totara_mobile_program query now returns a 'viewable' flag for all courses in the program

                   Also available in 15.4 and later releases.

    TL-32894       Removed deprecated code in /admin/ directory
    TL-32968       Added support for activity completion progress

                   With this change it is possible for activity modules to optionally set a
                   percentage progress towards activity completion, in order to make it possible to
                   report on more fine grained progress towards completing an activity.

                   At this point the new API is not implemented for any activities yet, and there
                   is no interface changes which display activity progress.

                   This change includes a database upgrade to add a new "progress" field to the
                   "course_modules_completion" table. The new field supports values between 0 and
                   100. Existing records will be given a "progress" of "null".

                   Also available in 15.1 and later releases.

    TL-33054       Added support for entity snapshots to events

                   Also available in 15.2 and later releases.

    TL-33070       Refactored xAPI receiver code to avoid need to specify component that will handle the request

                   The xAPI statement receiver endpoint no longer expects the component to be
                   specified - instead the receiver handles authentication and basic validation
                   then triggers a xapi_statement_created event that can be handled by any
                   component or plugin.

                   The existing LinkedIn Learning code was updated to make use of the new event.

                   When configuring xAPI reporting in LinkedIn Learning it is no longer necessary
                   to include the component parameter in the xAPI Server URL field.

                   Also available in 15.2 and later releases.

    TL-33094       Moved subject and manager recipient classes to core for increased re-usability

                   Also available in 15.2 and later releases.

    TL-33124       Activity modules can now introduce notifications via modern notifications

                   Notifiable events can be added to all context levels. However, the navigation
                   system does not provide links to add, edit, delete custom notifications at these
                   levels.
                   This change introduces a manage notification link to the activity settings
                   branch in the navigation tree providing there is at least one relevant resolver.

                   Also available in 15.2 and later releases.

    TL-33375       Deprecated totara_tenant\entity\tenant

                   totara_tenant\entity\tenant is a duplicate of core\entity\tenant

    TL-33380       Allow notifications to be sent to third-party email recipients

                   The new notifications system has been improved to allow recipient groups to
                   return lists of virtual users. These virtual users should each contain a valid
                   email address. When the recipient group is selected in a notification, the
                   notification will be sent to these email addresses.

    TL-33422       Fixing incompatible function return type signatures in preparation for PHP 8.1 support.
    TL-33454       Improved the email_to_user() function to allow for multiple file attachments in a single email

                   This change allows multiple attachments to be passed through to the
                   'email_to_user()' function by passing the attachments through in the new
                   attachment_list parameter. This list should contain [attachment_name =>
                   attachment_file]

    TL-33457       Added support for customfield placeholders in notifications
    TL-33470       Updated the minimum Totara server and database requirements

                   We have updated the supported server versions for Totara 16.
                   * The minimum PostgreSQL version has been increased to 10. PostgreSQL 9.6 and
                   below are no longer supported.
                   * The minimum MariaDB version has been increased to 10.3.17. MariaDB 10.2 and
                   below are no longer supported.
                   * The minimum Apache version has been increased to 2.4. We do not recommend
                   running Totara on the Apache 2.2 line.
                   * The maximum PHP version is set to 8.0.x. PHP 8.1 and above are not yet
                   supported.
                   * PostgreSQL 14 support has been added. The enable_memoize option must be
                   disabled in your database configuration.
                   * MariaDB 10.6 support has been added. The innodb_read_only_compressed option
                   must not be enabled.

                   The full list of server requirements are outlined in the readme file.

                   The Environment Check page has been updated in Totara 13 and above and can be
                   used to check if your setup meets the minimum server requirements for Totara 16.

                   Also available in 15.4 and later releases.

    TL-33494       Configured pytest to log with the xmlunit1 log format for the recommendations system unit tests.

                   Also available in 15.3 and later releases.

    TL-33727       Incremented web browser supported versions

                   Official support for Edge Legacy (Edge <= 18) has been dropped, and the
                   officially supported minimum Safari version has been increased to 13.1.

    TL-34000       Changed name field format to 'PLAIN' for 'totara_oauth2_client_provider' type

                   Also available in 15.6 and later releases.

    TL-34168       Updated the minimum supported versions for MariaDB and MySQL

                   The readme has been updated with explicit minimum versions for both MariaDB and
                   MySQL.

                   MariaDB we have set the minimum to the first stable release of each line. Alpha
                   and beta release versions are not supported.

                   MySQL 8.0.1 is the minimum. MySQL 8.0 does not include the required encoding
                   Totara needs.

                   In all cases, we recommend using the latest version in each database release
                   line.

                   Also available in 15.6 and later releases.

Tui front end framework:

    TL-25683       Removed file paths from jest descriptions
    TL-25928       Weka editor now has the same focus outline as other inputs

                   Also available in 15.4 and later releases.

    TL-26643       Added a optional large set size popover setting

                   Added a setting to allow popovers to be set to a large size for correctly
                   displaying larger amounts of content.

    TL-30088       Uploaded videos have the same max width as YouTube or Vimeo Videos

                   Also available in 15.4 and later releases.

    TL-30760       Updated CheckboxGroup and RadioGroup Tui components to trigger required validation on blur

                   Also available in 15.4 and later releases.

    TL-30762       Updated TUI Select and FormSelect components to correctly trigger required validation on blur

                   Also fixed issue where 'touch' wasn't included in the FormScope Reform element
                   reformScope.

                   Also available in 15.3 and later releases.

    TL-31255       Uniform date selector now shows validation immediately after entering a value

                   Previously this was only shown once the form was attempted to be submitted

                   Also available in 15.4 and later releases.

    TL-31967       Fixed issue where collapsing the tables on the 'manually rate competencies' page would remove the table header

                   Also available in 15.5 and later releases.

    TL-32441       Updated produce() immutable helper to support objects frozen with Object.freeze(), such as Apollo results

                   Also available in 15.2 and later releases.

    TL-32542       Added an open in new window setting when creating a link in Weka
    TL-32619       Use ConfirmationModal for Engage confirmation modals
    TL-32695       Replaced 'char length' field on the NotepadLines page in the Tui samples library with a select list

                   Also available in 15.1 and later releases.

    TL-32823       Updated the form/Radio Tui sample component to only include relevant sample props

                   Also fixed the sample props that weren't yet bound to the component

                   Also available in 15.2 and later releases.

    TL-32995       Prevented moving an item to the same position on the dragdrop component

                   Also available in 15.1 and later releases.

    TL-33000       Fixed accessibility issue with disabled buttons

                   Also available in 15.1 and later releases.

    TL-33197       Added "contextMode" prop to LabelledButtonTrigger with default set to "uncontained" to fix display issues with long names

                   Also added hyphenation to text in LikeRecordsList for overflowing names

                   Also available in 15.3 and later releases.

    TL-33349       Updated Collapsible to add new visual style options
    TL-33389       Updated Table to take a headerHasLoaded prop so the header will render while the body loads
    TL-33407       Changed delete comment modal to use ConfirmationModal
    TL-33413       Fixed the handling of null in tui/immutable produce()

                   Previously, returning null in produce() was the same as not returning anything.
                   It is now treated as returning a value, so it is now possible to have `null` as
                   the result of a recipe.

                   Also available in 15.4 and later releases.

    TL-33466       Fixed encapsulation of Vue CSS in notifications
    TL-33497       Fixed error modal "copy all" in IE 11

                   Also available in 15.5 and later releases.

    TL-33528       Updated the ToggleSwitch TUI component to match the design spec when disabled

                   Also updated the colours to be inline with the current design and updated the
                   TUI samples page to allow for testing of the disabled setting

    TL-33554       Improved display when changing the time on a video added with Weka

                   Also available in 15.4 and later releases.

    TL-33572       Fixed visual clipping on the ParticipantGeneralInformation TUI component

                   Also available in 15.5 and later releases.

    TL-33687       Changed HTTP method from POST to GET when loading the data for a Totara dialogs

                   Also available in 15.6 and later releases.

    TL-33759       Fixed Reform displaying errors on touched fields before validations were complete
    TL-33920       Fixed an issue where importing Vue in ext_ Tui components would end up with a separate copy of Vue instead of referencing the one in the core bundle

                   Also available in 15.6 and later releases.

    TL-33921       Implemented triggering an error to prevent the compilation of large SCSS files containing non-ASCII characters on PHP < 7.4 to hang

                   Due to PHP bug 72685, versions of PHP before 7.4 cannot efficiently run Unicode
                   regexes over large strings. We work around this by removing non-ASCII characters
                   from comments to avoid hitting the Unicode path where possible, and by erroring
                   instead of hanging on large files in order to communicate the source of the
                   problem.

                   This behavior can be disabled through the "Allow unperformant CSS" option in the
                   Tui frontend framework settings.

                   Also available in 15.6 and later releases.

Recommendations engine:

    TL-33600       Fixed the headers of exported `item_data_x.csv` files for the recommendation engine

                   The headers that related to the course tags and engage topics were being
                   prefixed with 'topic_' string. This would cause buggy computations in the
                   recommendation engine when some tags and labels shared the same name. This bug
                   is fixed so tags and labels will have relevant prefixes 'tag_' and 'topic_',
                   respectively.

                   Also available in 15.5 and later releases.

    TL-33681       The warning issue with the new APScheduler package is resolved

                   Also available in 15.5 and later releases.

    TL-33682       Fixed the favicon issue after Flask upgrade

                   Also available in 15.5 and later releases.

    TL-33696       Updated the requirements file of the recommendations engine with specific library versions

                   Prior to this change only directly added libraries were recorded in the
                   requirements.txt. Any dependencies for these libraries would load the most
                   recent version it could, which could result in things breaking if a new version
                   introduced a breaking change and did not report it correctly.

                   With this patch, we have pinned all dependencies to specific versions that we
                   have tested works with the recommendations engine.

                   Also available in 15.5 and later releases.

Library updates:

    TL-28214       Updated PHPSpreadsheet library to version 1.19.0
    TL-28228       Updated library xhprof to version 2.3.4
    TL-28235       Moved library SCSSPHP to composer
    TL-28238       Updated library GeoIP2 to version 2.11.0

                   Also moved into /libraries/required and to use composer

    TL-28242       Upgraded the window.fetch polyfill library to version 3.6.2
    TL-28257       Updated DOMPdf library to version 1.0.2
    TL-28258       Updated library SVGGraph to version 2.30.0
    TL-28259       Upgraded PHPSec library to version 2.0.35
    TL-28260       Updated library jQuery Datatables to 1.11.3
    TL-28261       Updated library Flexitour to 0.12.3
    TL-28262       Updated popper.js to 1.16.1-lts
    TL-28266       Moved library setasign/fpdi to composer
    TL-28267       Updated prosemirror libraries to latest versions
    TL-28269       Updated date-fns library to version 2.24.0
    TL-28272       Updated library Vue to version 2.6.14
    TL-31405       Updated library lessphp to version 3.1.0
    TL-31637       Upgraded Flask library from 1.1.2 to 2.0.3

                   Also available in 15.4 and later releases.

    TL-32263       Updated PEAR core library to version 1.10.13
    TL-32317       Updated library core-js to version 3.19.1
    TL-33077       Updated FPDI-1.6.2 library to support PHP8.x
    TL-33555       Imported mustache library version 2.14.1

Contributions:

  * Brad Simpson at Kineo USA - TL-33547