Changelog
Follow up on the latest improvements and updates.
RSS
new
improved
Interactive Video 1.4.3
Added
- New player event: iv:playerSeekStart with current time (before seeking) as the event detail. This does not apply to the original player. For instance, if you're showing YouTube player controls and users click on the progress bar, this iv:playerSeekStart event does not fire.
Updated
- Course Activity interaction type 2.0 now embeds the course module content directly on the Interactive Video. This means learners can attempt the Quiz, submit the Assignment, or interact with SCORM content without leaving the Interactive Video. This also means you can turn any course module into an interaction. Here is the updated tutorial to reflect this exciting update.
Note:
When you back up an isolated
Interactive Video activity, the reference activities are not backed up together with it. However, if you back up the whole course, all activities are backed up together. All reference activities in the Course Activity interactions will be re-linked automatically. This has been the case since 1.0.- Minor UI and performance improvements
Fixed
- Completion status was not checked when the Interactive Videos were launched in a modal on the course page.
new
improved
Interactive Video 1.4.2
Added
📢 Interaction type:
Video Track
(paid): currently being tested, with this extension, you can set up a multi-video activity or provide alternative videos (e.g., dubbed versions).Updated
- Player improvement #1: allowing multiple instances on the same page. Videos of the same type (e.g., YouTube, Vimeo, etc.) can be initialized on the same page, provided the player nodes have unique IDs.
- Player improvement #2: ThegetInfo(URL, node)method allows simple initialization of the video into the specific node and returns video information such as name, duration, and poster image.
- Player improvement #3: Better error handling when the player is no longer active (destroyed).
- Player improvement #4:iv:playerDestroyedis available on all players.
- Player improvement #5: new events:iv:playerStart(triggered after first play),iv:playerStarted(triggered after first play codes are complete),iv:playerReload(triggered after a new player replaces the current player).
- Player improvement #6: Interaction type plugins can now use thesetPlayermethod to switch players.
- Interaction type class now has a mainproperty that can be used to check if the current video is the main video (in a situation where there might be multiple videos, such as in Video Track extension).
- Interaction type plugins can now listen to the window event closemodal, which is posted when the player modal on the course page is closed.
- 100ms is added to ResizeObservers to avoid executing the observing function too frequently.
- Reset the interaction cache on every annotationupdatedevent to make sure interaction is refreshed.
- 'Last watched point' is no longer updated on every pause. Instead, the point is saved only when the user leaves the page (unloads the page and switches tabs). The change does not apply to the mobile app and embed mode.
- DOM search improvement.
Fixed
- In some non-standard themes, the modal backdrop was not hidden/removed after the video modal was closed.
new
improved
fixed
Interactive Video 1.4.1
Added
📢 Interaction type:
Audio Track
(paid): provides alternative audio tracks📢 Interaction type:
Rajab's Game
(free): gamifies learning with levels, collectable badges, and a leaderboard (individual and group).

- Event: iv:playerVolumeChange for when the player is muted/unmuted.
Updated
- RuTube player updates:
- Update the pause event listener
- Controls can now be hidden.
- Video quality can now be set.
- Skip Segment interaction type:
The skip segments can now be set as optional, allowing learners to still view the segments and choose to skip them by clicking the skip button. For example, if your video contains a segment where you explain or show the answer keys, you can force skip this segment before completion. After the interactive video is complete, the answer key segment becomes optional, so learners can choose to watch or skip that segment.

- Annotation interaction type:
A huge update in version 1.3, adding three new annotation items, including
Video, Audio, and Mute
. Video and audio are synced with the main video. The instructor can add a presenter's video, a sign-language interpreter video, or an alternative video that covers the entirety of the original video. Similarly, they can mute a certain segment of the video and replace it with a different audio. This update also brings a huge performance improvement by reducing DOM manipulation instances.- Course Activity interaction type(paid):
A small update that allows XP to be awarded partially based on the grade in the reference activity. For example, if the reference activity is a Quiz and the learner receives 75% in that quiz, they will also be awarded 75% of the XP assigned.
- Improvement on earned XP calculation, especially after the instructor updates XP after the activity is attempted.
- Minor UI improvements
Fixed
- Strange behavior in Moodle 5.0.1+ (Build: 20250620) in which the hidden posterimagefile field showed an error when the user created a new activity.
new
improved
Core
Sub-plugin
Free
Pro
Interactive Video 1.4.0
New
📢 New paid interaction type: Reaction
To enhance social learning on the Interactive Video, Reaction offers learners and instructors various methods to connect and interact, including reactions, public comments, private Q&As, and private notes.
📢 Ability to set default settings for each interaction type per course level
With this time-saving feature, you can use an existing interaction as a default for the specific interaction type. When you add a new interaction across the course, the default settings will apply automatically.

📢 Ability to align the activity card in the middle of the course page

📢 Subtitle support for DASH and HLS videos
If the video source contains text track data, a selection menu will be displayed, similar to other sources, including YouTube and Vimeo.
Update
- Performance improvement on the report page.
- Interactive video course settings and defaults are now backed up and restored when a course backup/restore is performed.
new
improved
fixed
Core
Free
Interactive Video 1.3.1
Add:
- New appearance setting: Full-width poster image. This option will allow the poster image on the course page to fill up the available space instead of being restricted to 200px.

Before

After

- Resized popup view: Full-width view is not always the best option. This resized-view option allows the video to be displayed in a narrow view on the course page. It's up to users -- there is no related setting.

- New event: iv:playerPlay for when video plays or resumes. Unlike iv:playerPlaying, which is conditioned by whether the player uses animation frame, iv:playerPlay fires only once.
Update:
- No longer force aspect ratio to 16:9 on default view
- No longer change dark-mode value to 0 when distraction-free is unchecked on the activity form. Instead, it will be handled programmatically (i.e., if distraction-free is 0, dark-mode is 0).
- Improve error handling with Vimeo videos (e.g., displaying the message from Vimeo if the video becomes inaccessible).
- On the course page, when an activity is used in the restriction condition, the page will be reloaded when the player modal is dismissed with overall completion: completed.
Fixed:
- Live video sometimes showed a NaN timestamp.
- Keyboard shortcut E for enlarge/resize player, not L.
- Keyboard shortcuts did not work when the main control bar was hidden.
new
improved
fixed
Interactive Video 1.3.0
New
- New interaction type: Course Activity
- Keyboard shortcuts in both player and editor modes


Improved
- Download the update from GitHub rather than BuyMeACoffee
- Upgrade Bootstrap Icons to 1.13.1
- Use Moodle's modal in place of Bootstrap modal for better accessibility and better theme support (e.g., snap theme)
- UI and accessibility improvements
Fixed
- Incorrect mapping items in define_decode_contents
- Error when Chapter is not enabled by admin.
new
improved
fixed
Core
Free
Interactive Video 1.2.3
NEW
📢
Bulk actions: Download and Upload
In previous releases, we introduced two bulk actions: copy and delete. In this release, we are introducing another bulk action feature that allows instructors to export the selected interactions as a package (.ivz) file. The exported package can then be uploaded across sites, allowing more flexibility in re-using/re-purposing the existing interactions.
Also note that when transferring content across sites, some interactions won't be shown if the destination site does not have corresponding interaction types installed. However, their data is saved in the destination site. Once the interaction types are installed later, the corresponding interactions will be shown automatically.
📢 Bulk actions: Check all
You can now select or deselect all interactions during a bulk action operation.

📢 Confetti for activity completion
Activity completion should be more exciting, so we added confetti fireworks when the completion conditions are fulfilled.
📢 Others
- You can use da=1 in the URL to force disable autoplay.
- When "Hide main video controls" is enabled, a light progress bar is now shown at the bottom of the video. The progress bar isn't clickable.
UPDATE
- Improve support for BS5.
- Add 'timeended' column to privacy metadata.
FIX
- During activity backup, if the contentbank item is deleted, the relevant data becomes null. This caused a failure when the backup file was restored.
new
improved
Interactive Video V1.2.2
NEW
📢
Activity completion condition "Watch till the end"
You can now set the interactive video as complete when the learner reaches the end of the video.

***

Note:
This does not guarentee that learners watch the entire video as they can still skip or seek to the end of the video. If you want to track percentage watched or set required segments, check out the paid interaction "Analytics". 😉📢
Bulk action: "Copy & Paste" across courses
In the previous release, we implemented the first bulk action -- delete. You can select multiple interactions and delete them at once.
In this release, we introduce a new action: copy and paste. What it does is it allows you to copy multiple interactions and paste them anywhere: in the same activity, in the same course or across courses.

How?
- First, enable the bulk action.
- Select the interactions you want to copy.
- Click the copy button. This should activate the paste button.
- Go to the destination activity. You should see that the paste button is activated.
- Click the paste button to proceed.
📢
Player method: isMuted()
Use isMuted() to check if the player is muted.
UPDATE
- Get rid of custom.css introduced in 1.1. Earlier we included the custom styles in custom.css because Moodle's RTL compiler had (still has) serious problems compiling modern CSS (clustering, @container, etc.) in the styles.css file. Importing custom.css into styles.css fixed these problems and we can still use the modern CSS, however, this caused a new issue with Moodle instances with sub-folder installation (e.g., moodle.com/lms). So our current solution is putting all the style codes in the styles.css file, use modern CSS for dir:ltr and fallback styles for dir:rtl.
new
improved
Interactive Video V1.1.6
📢
Resumable H5P Content State
- With this new update, H5P content state/progress can be saved and resumed. This feature is added at the interaction level, meaning it can be turned on or off per interaction as opposed to the course/site level. Look for this option in the advanced section. By default, this option is turned off.

- When this option is enabled, a log is created when each learner interacts with the H5P content. The log is updated with the state data (aka user content data) and saved to the database table when the interaction is dismissed or closed. When the interaction is relaunched, we'll attempt to get the relevant log. If the log exists, we'll show a confirmation dialogue in which the learner can choose to resume or start from the beginning.

- Also comes with the feature is the ability to view the learner's response on the report page. When the state saving is enabled, teachers can click on the report cell (see below) to launch the content with the submitted response. This response is final and does not change after the learner re-attempts the content.

- Technical Implementation:How is this feature implemented?
Most of the standard H5P content types can restore the state/progress, while some do not implement it intentionally. However, it's up to the LMS to implement the saving and resuming process. Unfortunately, Moodle does not implement this in its core H5P. After some research and testing, we learned that state saving can be turned on by modifying the H5PIntegration class. Here are the steps:
- First, we check if the specific H5P Content has state saving enabled by the teacher. If so, we're attempting to get the existing state (aka log) from the database.
- If the learner chooses to resume the content from the previous state, we're going to keep the log as is; otherwise, we use log=''.
- As soon as the interaction is launched, we use requestAnimationFrame()to detect theH5PIntegrationclass from the iframe. As soon as the class is found (before the.h5p-initializedCSS class is applied to the DOM), we have to enable state saving by changingH5PIntegration.saveFreqfromfalseto1, meaning we want the state to be saved every second. This does not necessarily mean the state will be saved in the database every second. The state data is updated inH5PIntegration.contents[id].contentUserData[0].state.
- Now we use the log value as the default state. H5PIntegration.contents[id].contentUserData[0].state = log.
- And just like that, the state saving is ready.
- When the interaction is closed, dismissed, or refreshed, we check the value from H5PIntegration.contents[id].contentUserData[0].stateand save it to the database.
📢
Lockable Chapter
- Chapters can now be locked until a condition is met. The available conditions are:
- Until all interactions in the previous chapter are complete
- Until all interactions in all previous chapters are complete
- Until the interactive video activity is complete (based on the activity completion condition)
- When a chapter is locked, all interactions within that chapter are temporarily removed.

new
fixed
Interactive Video V1.1.5
Added
- Ability to check for the interaction type updates from the settings page. Links to the buy me coffee page for the plugin will be provided.
- Use options.isCompleted to check if the Interactive Video is completed. This will be used in the future to check if the video is completed or not.
- New paid interactions: Interactive Transcript and SCORM Content.
Fixed
- The divider line is not shown correctly.
- Remove duplicate code blocks.
Note
- We've been able to trick YouTube into not displaying the related videos when the video is paused. However, it appears that YouTube has changed its behavior, and the trick might not work under some circumstances.
Load More
→