Changelog
Keep up to date with all our updates.
-
Sensei Pro 1.24.11
Security
- Escape more frontend and admin output in Sensei Pro and tighten the Content Drip teacher check.
- Tighten the permission checks of the Content Drip admin requests and the migration notice dismissal.
Fixed
- Use canonical VideoPress embed URLs when adding hosted video files to an Interactive Video block.
-
Sensei 4.27.0
Security
- Added capability checks to the course notification, settings section, exit survey and extension install requests.
- Close comments on lessons the current user cannot view, so they cannot post comments to them.
- Drop block inline style values that add extra CSS declarations and escape the progress bar label.
- Escape the email title in the checkbox column of the Emails settings screen.
- Escape the module name in the Learning Mode lesson module block and in the lesson breadcrumb.
- Improved the permission checks when assigning a lesson to a course.
- Improved the validation of file upload answers in quizzes.
- Improved the validation of quiz submissions.
- Match lessons on title and excerpt only in site search for users who cannot edit lessons while Access Permissions is enabled.
- Only render question posts when loading the questions a student was asked in a quiz.
- Remove the comments of lessons the visitor cannot view from the comment feeds.
- Respect the course completion mode and the quiz pass requirement when completing a course or lesson from the front end.
- Restricted the Order Lessons and Order Modules screens to courses the current user can edit.
- Return a 404 on the course results page when the course is not published and the user cannot read it.
- Tighten the permission checks of the quiz editor, lesson prerequisite and grading admin requests.
- Tighten validation in the REST API, private messages and the students list, and escape more frontend output.
- Validate the quiz colors and the setup wizard data saved through the REST API.
- Validate the values written by the legacy quiz editor.
Added
- Add the sensei/course-create ability so AI agents can create draft courses with the default course layout. #8370
- Add the sensei/course-structure-set and sensei/course-structure-get abilities so AI agents can build and read a course outline, and refuse structure saves that reference another teacher’s module. #8375
- Add the sensei/quiz-questions-set ability so AI agents can set a lesson quiz’s settings and questions, and reject invalid quiz questions before creating the quiz. #8376
Changed
- Exclude guest and preview students from Last Activity rows and the Completions, Completion Rate, and Average Grade headers in the Courses report. #8306
- HPPS: Add support for Average Grade in the Courses report. #8346
- HPPS: Add support for Average Progress in the Courses report. #8346
- HPPS: Add support for completion counts and rates in the Courses report. #8346
- HPPS: Add support for Days to Completion in the Courses report. #8346
- HPPS: Add support for enrollment counts in the Courses report. #8346
- HPPS: Add support for Last Activity in the Students report. #8353
- HPPS: Support student management listings. #8378
- HPPS: Use the selected progress storage for course status and dates in the enrollment debug tool. #8432
- Improve Grading load times. #8434
- Use MailPoet for Sensei newsletter signups. #8412
Deprecated
- Deprecate Sensei_Course_Theme::get_learning_mode_customizer_url(), unused since the Customize Colors link was removed. #8364
- Deprecate Sensei_Quiz::the_quiz_progress_bar(). #8332
- Deprecate Sensei_REST_API_Lesson_Quiz_Controller::get_single_question_schema() and get_common_question_properties_schema() in favour of Sensei_Lesson_Quiz_Saver. #8376
- Deprecate Sensei_REST_API_Lessons_Controller::lesson_course_meta_auth_callback(). The lesson course is now checked on the REST request.
- Deprecate Sensei_Utils::get_course_progress_comment_id() in favor of get_course_progress_id(), which returns the ID from the selected progress storage backend. #8429
- Deprecate the legacy Courses report completion callback. #8348
- Deprecate the raw SQL query argument for comments-based progress status counts in favor of structured filtering arguments. #8434
- Deprecate the sensei_analysis_course_completions filter – the Courses report now uses the progress aggregation service. #8346
- Deprecate the sensei_analysis_course_percentage filter – the Courses report now uses the grading statistics service. #8346
Removed
- Remove sorting by Completions from the Courses report. #8341
- Remove the progress bar option from the Quiz block and its automatic frontend rendering. #8332
Fixed
- Exclude guest and preview progress from Lessons report counts, activity and completion durations. #8357
- Exclude guest and preview users from lesson Students, Completed, and Average Grade in course reports. #8322
- Exclude guest and preview users from Reports listings, totals, and exports. #8323
- Fix a PHP warning on module archives that have no lessons, such as a module filtered to a course it does not belong to. #8328
- Fix a PHP warning when duplicating a course whose lesson requires a lesson from another course. #8416
- Fix bulk student actions failing with an empty student list despite students being selected on the Students page. #8399
- Fix compatibility with PHP 8.5. #8289
- Fixed course completions not synchronizing to HPPS tables when comments storage redirects after completion. #8310
- Fixed Last Activity values and date filtering for translated courses in Reports. #8350
- Fixed the lesson progress being kept when resetting a student’s course progress in a secondary language with WPML. #8295
- Fixed the Students screen not updating a student’s status after resetting their progress until the page was reloaded. #8296
- Fixed the Students screen showing every student as Not Started on a course opened in a secondary language with WPML. #8282
- Fix Grading status counters including other courses when a teacher filters by course. #8367
- Fix lesson and module ordering for non-admin users when a course contains modules owned by another user. #8324
- Fix out-of-memory errors when searching for courses with Jetpack Search on sites with many enrolled students. #8327
- Fix PHP notices on the course report Students view. #8303
- Fix PHP warnings in the course students batch and update teacher REST permission checks when required parameters are missing. #8333
- Fix quiz answer feedback blocks always showing expanded in the editor, and several Learning Mode blocks that could not be selected in the editor. #8292
- Fix report searches, CSV export filters, and HTML entities in exported titles. #8373
- Fix Sensei Home review notice buttons not responding when clicking their labels. #8290
- Fix stale course progress totals after completing a course. #8390
- Fix submitted files failing to open or download from Grading. #8330
- Fix the Course List block showing no courses, no filters, or the page itself on pages translated with WPML. #8283
- Fix the Courses report showing an unrelated student’s Last Activity date when the course and student share the same numeric ID and the users-table relationship is unavailable. #8351
- Fix the lesson Quick Edit fields not showing the lesson’s current values on the lessons list. #8402
- Fix the MailPoet daily sync job not being scheduled. #8254
- Fix the module order of a lesson translated or duplicated with WPML when the current language differs from the original lesson’s. #8431
- Fix translated lesson activity and completion metrics in Lessons reports. #8354
- Handle failed course and lesson progress creation and retain submitted quiz text for retry. #8403
- HPPS: Fix incorrect progress metadata updates. #8390
- Improve keyboard navigation, navigation semantics, and progress text contrast in Learning Mode. #8335
- Improve progress-write error logs with readable messages and diagnostic context. #8426
- Report failed and partial student enrollments in the Students course-selection modal. #8398
- Report failed progress comment creation when saving course, lesson, or quiz progress. #8419
- Save the quiz on the first save when the Quiz block is added from the block inserter. #8379
- Show an error when quiz progress cannot be created. #8433
- Use lesson completion dates for Courses and Students report Last Activity when reading progress from HPPS tables. #8369
Development
- Centralize Grading and Reports query-service composition. #8255
-
Sensei Pro 1.24.10
Security
- Content Drip: require the grading capability on the manual drip AJAX handlers.
- Ensure the course signup button label cannot change the page markup.
Changed
- Update bundled JavaScript libraries: DOMPurify, lodash, react-redux, framer-motion, Floating UI, colord, and interpolate-components.
Fixed
- Content Drip: Hide the number input spinner in Firefox and widen the drip interval field.
- Fix a React ref warning in the Accordion block editor.
- Fix two block editor console warnings in the accordion and AI course outline.
- Flashcard: Prevent the completion callback from being passed to the DOM.
- Revoke course access immediately when a WooCommerce Memberships membership ends.
- WooCommerce Paid Courses: escape course titles returned by the product course-search field.
Development
- Upgrade the development toolchain to Node.js 24 and npm 11.
-
Sensei 4.26.4
Security
- Check the destination course permissions when changing the lesson course from the bulk editor.
- Enforce course edit permissions when creating a module from the course editor.
- Enforce lesson edit permissions when saving the course structure.
- Ensure Learning Mode applies colour values without changing block markup.
- Escape the label attribute in the Exit Course block.
- Escape the teacher name and archive link rendered by the sensei_teachers shortcode.
- Improved how locked lesson content is excluded from frontend listings.
- Improved how private messages are excluded from frontend queries.
- Improved how the admin lesson and course fields are initialised so that post content cannot influence them.
- Improved the authorization of lesson completion.
- Improved the authorization of private messages sent to teachers.
- Improved the authorization of usage tracking events.
- Improved the handling of files uploaded as quiz answers.
- Improved the privacy of private messages.
- Improved the scoping of teacher comment moderation.
- Made request-input handling consistent across the admin and frontend.
- Prevent students from changing their quiz answers after the quiz has been submitted.
- Require the Order Courses capability to save the course order.
- Restrict the legacy lesson quiz save handler to the lesson being saved.
Changed
- Reports Overview Students and Courses header counts now read HPPS progress tables when High-Performance Progress Storage is enabled. #8231
- Reports Overview students per-row average grade now reads HPPS progress tables. #8205
- Reports Overview students per-row course counts now read HPPS progress tables when High-Performance Progress Storage is enabled. #8231
- Resolve HPPS storage configuration consistently across progress query services and repositories. #8248
- Update Sensei blocks to Block API version 3 so they render in the WordPress iframe block editor. #8190
- Update the Action Scheduler package to version 4.1.0. #8166
- Update the pelago/emogrifier package to version 7.3.0. #8231
Deprecated
- Deprecate the
sensei_analysis_user_lesson_gradesfilter. #8205
Fixed
- Fix a fatal error when a teacher triggers a module hierarchy rebuild.
- Fix a PHP 8 TypeError when
post_updatedfires with a null post object during autosave. #8222 - Fix a PHP 8.4 deprecation notice when exporting CSV files. #8213
- Fix a thick border showing on Course Outline modules in the editor when the module border setting is off. #8191
- Fixed a PHP deprecation notice when reviewing a grade for an unanswered True/False question. #8214
- Fixed a PHP warning when changing a course’s teacher on a course with no modules. #8225
- Fixed edits to a WPML-duplicated lesson’s quiz landing on the original language’s quiz and questions. #8220
- Fixed quiz answers, grades, resets, and lesson and course quiz surfaces breaking when the admin uses a secondary language or the lesson is translated on multilingual sites. #8130
- Fixed saving a translated course overwriting and stealing the original course’s lessons on WPML sites. #8219
- Fixed the quiz saved message not showing in Learning Mode. #8272
- Fixed the student management and grading screens showing no students when the WPML admin language is not the original one. #8224
- Fixed the text domain on the “Generate quiz questions with AI” upsell label so it can be translated. #8230
- Fix garbled text in button blocks whose text uses non-Latin characters when the button URL is set at render time. #8226
- Fix lesson/module hamburger menu being hidden on mobile when the course title is too long. #8094
- Fix lesson order not reaching WPML translations when the translated lessons are not duplicates. #8246
- Fix lessons removed from a course staying in its WPML translations after the translation is updated. #8245
- Fix PHP 8.4 deprecation warnings from implicitly nullable function parameters. #8199
- Fix Sensei templates in the Site Editor when Gutenberg’s Template activation experiment is enabled. #8250
Development
-
Sensei 4.26.3
Security
- Scope the Students management user search to student accounts. #8174
- Require the grading capability on the lessons dropdown AJAX endpoint and scope it to the caller’s own lessons.
- Restrict adding a student to a lesson so it is only allowed through the lesson’s own course.
- Prevent a teacher from deleting another teacher’s unused module.
- Remove the admin notice that exposed the administration email address to non-administrators.
Removed
- Remove the course and lesson editor tours. #8150
Fixed
- Fix a false “already owned by another teacher” error that blocked saving a course containing a module without a resolvable owner. #8180
- Fix course layouts and Sensei blocks not loading when Show template is enabled. #8139
- Fix quiz results and grading showing a previous attempt’s grades after a retake from another language on multilingual sites. #8125
- Fix spacing and styling of quiz question options when using the iframed block editor. #8172
- Fix the Grading screen Grade button and row titles when the admin uses a secondary language on multilingual sites. #8121
- Fix the quiz results page showing questions in the language the quiz was taken in instead of the viewer’s language on multilingual sites. #8124
- Fix lesson prerequisites pointing to the original-language lesson on WPML-translated lessons. #8132
- Fix lessons appearing out of order in translated courses when a new lesson is translated with WPML, and attach WPML lesson duplicates to the translated course. #8149
- Fix PHP 8.1 deprecation notices rendered into the quiz page for unanswered Multi Line questions. #8146
- Fix quiz question titles and answers not being translated on WPML-translated lessons. #8100
- Fix the Add Student form layout on the Students page. #8147
- Fix the misaligned Reset filter button on the Grading screen. #8122
- Fix typo in My Courses Page setting description #8106
- WordPress 7.1 Compatibility: Course and lesson block colors match the theme in the iframed post editor. #8179
- WordPress 7.1 Compatibility: Fix a PHP notice logged by Learning Mode templates. #8179
- WordPress 7.1 Compatibility: Learning Mode and email templates appear in their own group in the Site Editor. #8179