Forums Feature Requests Thread

[Enhancement] mobieusLearn: Video completion is honor-system 'Mark as viewed' — no watch-percentage enforcement

Patrick Bass · Jun 6 · 9 · 1 Locked
[High Priority] [Feature Enhancement] [Deployed to Production]
🚀 OP Jun 6, 2026 6:45pm

Area: mobieusLearn (audit p8) · Surface: Player activity view; content blocks · Dimension: existing-feature-improvement · Severity: major

Thinkific, LearnWorlds and Teachable can require a learner to watch X% of a video before the lesson is marked complete (and disable skip-ahead). mobieusLearn marks any video lesson complete on a single button click regardless of whether the video was played — defeating compliance/CE training use cases and inflating completion analytics. The 'time_met' criteria kind exists in the schema but isn't wired to actual video playback events. Why it matters: completion certificates and CE credit (the product issues both) become untrustworthy if a learner can complete a 60-minute video instantly.

Evidence

templates/learn/play/activity.php:368-374 — for `completion_criteria_kind === 'viewed'` it renders a manual `<button>Mark as viewed</button>` form. The schema HAS `completion_criteria_kind` ENUM('viewed','time_met','submitted','scored_at_or_above','scorm_complete') and `completion_threshold_seconds` (learn-phase1.sql), but grep for `currentTime|ended|played|watched|video.*progress` in activity.php finds no JS that ties the HTML5 video element's playback to completion. Content block kinds include native 'video' and 'external_video' (new-picker.php:12-13).

Suggested fix. Add a small player JS that listens to the HTML5 video 'timeupdate'/'ended' events, posts watched-seconds to the progress endpoint, and only enables/auto-fires completion when watched >= completion_threshold_seconds (or a % of duration). Optionally disable seek-ahead for required videos.

Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.


Patrick Bass
@mobieus

🚀 Jun 7, 2026 12:31pm

Shipped and deployed to production. Commit 34575952ac.

Video auto-complete at 85% watch: HTML5 timeupdate tracks furthest-played position in localStorage, restores on reload, triggers Mark as complete at 85%. Progress bar with aria. Iframe note for embeds.

Closed as: deployed.


Patrick Bass
@mobieus

Log in or register to reply to this thread.