What's Changed
- Adding steps to a course no longer takes completion away. A learner with
completed_atset keeps the completion page and certificate, and can still open and complete the new steps. In #150 - New
Course::unassignUsers()andCourse::assignUsers(). Unassigning deletes rows that have nocompleted_atand keeps completed rows as non-explicit, so private-course access goes away but the completion stays. Assigning again marks the row explicit and keepscompleted_at. The course Users and user Assigned Courses relation managers use them for Attach, Detach and Bulk Detach, and a kept completed row can be attached again. Host apps should call these instead ofusers()->attach()/detach(). filament-lms:backfill-course-completed-atgains--course=*and--steps-existing-at-completion. The second restorescompleted_atfor learners who completed every step that existed when they finished, at that finish time, without overwriting an existingcompleted_at. Run it with--dry-run --log-eachfirst.
Full Changelog: v5.2.4...v5.2.5