What's new in the Jitsi plugin v5.0

With version 5.0 of mod_jitsi the plugin takes a significant step forward in four directions: installation management through a developer portal, recording analytics with a viewing heatmap and attendance report, real-time presence in the room, and several security and performance improvements.

1. Developer Portal

Until now there was no mechanism to know how many installations of the plugin existed or which features were being used. v5.0 adds an opt-in registration and telemetry system managed from portal.sergiocomeron.com.

Installation registration

Administrators can register their installation in the portal directly from the plugin settings. Registration assigns a unique license_key that identifies the installation stably even if the site URL or server changes. No personal data is shared — only the SHA-256 hash of the hostname.

Anonymous opt-in telemetry

Once registered, the installation can enable the sending of a weekly anonymous ping. The data sent includes:

  • Hostname hash (never the real URL)
  • Plugin version and Moodle branch
  • Jitsi server type (meet.jit.si, self-hosted, 8x8, GCP)
  • Number of Jitsi activities on the site
  • Features enabled: AI, Jibri, private sessions, push notifications
  • Weekly usage stats: sessions, minutes, unique users, recordings

Sending is always opt-in: disabled by default, enabled explicitly by the administrator, and can be turned off at any time.

Per-installation authentication

Previously, telemetry used a shared secret that was the same for all installations. Now each installation authenticates with its own license_key, allowing individual installations to be revoked or audited and eliminating the risk of a leaked secret affecting everyone.

2. Full attendance report

The attendance report was basic in previous versions. v5.0 redesigns it from scratch with three tabs covering very different angles of course activity.

Tab: Live sessions

Historical attendance table for all videoconference sessions of the activity. For each student it shows:

  • Number of sessions attended
  • Total accumulated minutes
  • Average time per session
  • Attendance dates (with exact time once the cron has processed the data)

Tab: Recordings

This tab combines three complementary views for each recording:

  • Viewing heatmap (explained in detail in the next section)
  • Per-student progress bars: what percentage of the recording each student has watched
  • Access log: when each student accessed the recording

A date filter is available to narrow down the analysis period.

Tab: Course overview

Aggregated view of all Jitsi activities in the course:

  • Table with each activity, number of sessions, total minutes and unique students
  • Student engagement ranking in the course (sessions + minutes + recordings watched)
  • Top recordings by number of unique viewers

3. Recording viewing heatmap

This is the most visual new feature in v5.0. Below each embedded recording (GCS or Dropbox) a heat bar appears showing, segment by segment, how much of that fragment has been watched.

How it works

The player tracks which parts of the video each user watches in 10-second segments. That data is aggregated in the database and displayed as two overlapping bars:

  • Blue bar: unique viewers who have watched that segment
  • Orange bar: total plays (including replays)

Hovering over any segment shows a tooltip with the exact count and the corresponding time range. Clicking a segment on the blue bar shows the list of students who watched that specific part.

Who sees it

The heatmap is only visible to users with the mod/jitsi:viewattendance permission (teachers and administrators). Students see the player without the analytics bar.

What it is useful for

It lets you identify at a glance which parts of a recorded class are reviewed or replayed most, where students drop off, and what content generates the most interest. It is particularly useful for deciding what to reinforce in the next session.

4. Real-time presence

v5.0 adds a presence system that shows which participants are currently in the video conference room. The information updates in the background without needing to reload the page.

Teachers can see at a glance who has already joined the class before they do themselves, and students know whether the teacher is present. The presence data is also used internally to improve the accuracy of the connected participant count, which in previous versions could drift in long sessions.

5. Email invitations from the activity

Previously, inviting someone external to a Jitsi session required manually copying the room link and sending it outside Moodle. v5.0 adds an email invitation button directly in the activity.

The teacher enters the guest’s email address and the plugin sends a message with a direct link to the room. The recipient does not need a Moodle account.

6. Security and fixes

SQL injection fix

Two SQL injection vulnerabilities were fixed in formuniversal.php and recordun.php that allowed both unauthenticated and authenticated users to manipulate database queries. Both were replaced with parameterised queries using the Moodle API.

General hardening

Multiple entry points of the plugin were reviewed to strengthen parameter validation and access control. The dependency on a global shared secret for communication between the plugin and the portal was also removed, replaced by per-installation license_key authentication.

7. Performance

The recordings tab in view.php is now loaded lazily via AJAX: if the user does not open that tab, recording data is neither queried nor processed. For activities with a long recording history this significantly reduces the initial page load time.

Performance of sessionusagestats.php was also improved — on large sites it could generate slow queries when aggregating usage statistics.

Summary of what is new in 5.0

Developer Portal

  • Installation registration with stable license_key
  • Weekly anonymous opt-in telemetry
  • Per-installation authentication (replaces the shared secret)

Recording analytics

  • Viewing heatmap (blue/orange bars per 10s segment)
  • Attendance report with 3 tabs: sessions, recordings, course overview
  • Click a segment to see which students watched it

Presence

  • Real-time indicator of who is in the room
  • Improved connected participant count

AI and communication

  • Email invitation to external participants from the activity

Security and performance

  • SQL injection fix in formuniversal.php and recordun.php
  • General hardening and per-installation license_key authentication
  • Lazy loading of the recordings tab

The plugin is available on moodle.org and the GitHub repository. If you have any questions or find a problem, open an issue or contact me directly.