-
v1.2.0
StableCI / Tests (PHP 8.1) (push) Successful in 40sCI / Tests (PHP 8.2) (push) Successful in 1m5sCI / No Debug Code (push) Successful in 3sCI / Coding Standards (push) Successful in 2m53sCI / PHPStan (push) Successful in 2m52sCI / Tests (PHP 8.3) (push) Successful in 2m36sRelease / Build and Publish Release (push) Successful in 3m1sRelease / Open next-version bump PR (push) Successful in 4sCI / Build Plugin Zip (push) Successful in 2m47sreleased this
2026-07-24 19:30:27 +00:00 | 83 commits to main since this releaseAdded
- Offerings can now bill on a schedule: weekly (a pending payment 24 hours before each lesson) or monthly (one payment on the 1st for that month's lessons), alongside the existing one-time and full-term modes. Applies to both private lessons and group classes. A daily job generates due payments, and each student receives one consolidated itemised email per scan; batched payments share a reference so the admin Payments queue groups them with a lump-sum total for e-transfer reconciliation. Cancelling a lesson never voids a scheduled payment.
- Cancelling a lesson that was already paid for now credits the student that money instead of leaving it as a manual refund. The credit is one lesson's share of what they paid — the whole amount for a single lesson, or a per-lesson slice of a monthly charge or a full-term series. The daily billing scan automatically applies any available credit against a student's upcoming weekly/monthly charges before emailing their notice, which shows the credit applied and the reduced total due; a charge fully covered by credit is settled and leaves the admin Payments queue. A student's outstanding credit balance is shown on their student detail page in the studio admin. Still-pending (unpaid) payments continue to be voided on cancellation as before.
- Group classes now carry an enrolment deadline the instructor sets on the offering. It defaults to the first day of the class, and once it passes students can no longer enrol — the enrolment page shows the class as closed and the API rejects late enrolments. While enrolment is open, each class card shows an "Enrol by" date.
- Group classes now also carry a withdrawal deadline the instructor sets per class. Up to that day a student can withdraw themselves from the class (the group-class page shows a Withdraw button) — this frees their seat and voids any pending payment but does not credit their account. After the deadline self-withdrawal closes and the student must ask the studio, who can still withdraw them by hand from the student detail page. Leaving the deadline blank keeps self-withdrawal open indefinitely.
- The Add/Edit Offering form now shows only the fields relevant to the selected kind: the group-class settings (capacity, dates, times, enrolment/withdrawal deadlines, sessions, schedule note, invite-only) appear only for a group class, and the weekly-reservation option only for a private lesson.
- Instructors can add students to any group class by hand from its details page (Add students directly), which now appears for public classes too, not just invite-only ones. This bypasses the enrolment deadline and capacity, so a student can be enrolled as a late enrolment after the class has closed to self-enrolment.
- Studio admins and instructors can open a lesson detail view from the Scheduler and My Lessons lists, showing the offering booked, the policy versions the student accepted (with acceptance time and IP), and their intake answers. On My Lessons an instructor may only open their own lessons; the studio Scheduler may open any.
- The Student Registration block's "registration is by invitation only" message is now customisable, under a new Invitation-only notice panel (shortcode:
invite_only_message). Leaving it blank keeps the default wording.
Changed
- The student upcoming lessons panel now shows each booked offering's name and length beside the time, and lists only the soonest five lessons with a "Show all" reveal. The Scheduler and My Lessons week/list views likewise show the booked offering.
Fixed
- Accepting an invitation now keeps the student signed in. Previously the registration form processed the submission after the page had started rendering, so the sign-in cookie was never sent and the new student was bounced back to the (logged-out) registration page; it is now handled before any output, and the student lands logged in.
- Account-registration questions now save. On sites first installed before account-scope questions existed, the
us_questions.offering_idcolumn was leftNOT NULL(the schema migration relied ondbDelta, which does not reliably relax a column to allowNULL), so saving an account question failed with "Column 'offering_id' cannot be null". A one-time, self-healing migration relaxes the column on the next load.
Downloads