• v1.2.3 fabbd35fa7

    v1.2.3
    CI / Tests (PHP 8.2) (push) Successful in 46s
    CI / Tests (PHP 8.1) (push) Successful in 57s
    CI / No Debug Code (push) Successful in 2s
    CI / PHPStan (push) Successful in 2m55s
    CI / Coding Standards (push) Successful in 2m58s
    CI / Tests (PHP 8.3) (push) Successful in 2m42s
    CI / Build Plugin Zip (push) Successful in 2m49s
    Release / Build and Publish Release (push) Successful in 2m50s
    Release / Open next-version bump PR (push) Successful in 4s
    Stable

    thatguygriff released this 2026-07-28 20:23:22 +00:00 | 58 commits to main since this release

    Changed

    • A monthly group class is now billed its price once per month, however many times the class meets in that month. Previously the monthly charge multiplied the price by the number of sessions in the month — a class priced at 40.00 CAD meeting weekly was billed 160.00 CAD on the 1st — which no studio could quote honestly on a class card. A monthly private lesson is unchanged: its price is a per-lesson fee and the month is still billed one fee per lesson, which is why it is quoted per lesson. Studios running a monthly group class should check the class price now reads as the monthly fee they intend to charge.

    Added

    • Every price a student sees now says when it is due. Lesson types in the booking form read 50.00 CAD at booking, and group-class cards read 120.00 CAD up front, 40.00 CAD weekly or 40.00 CAD monthly — the offering's billing mode, in the student's words. A monthly private lesson is quoted per lesson (50.00 CAD per lesson monthly), since its monthly charge covers every lesson booked that month; a monthly group class is quoted as the monthly figure it is. A free offering still just reads Free.
    • The Policies admin page can now show you what is actually in a version. Every row in the versions table has a View button that opens that version's text below the table, rendered exactly as students see it at booking and signup, whether the version is the published one, an old archived one, or a draft nobody has seen yet. The text is editable straight from the viewer, and what happens when you save depends on the version: a draft is simply updated in place, while editing a published or archived version saves your text as a new draft version and leaves the original exactly as students accepted it. The new draft then opens in the viewer ready to publish. Nothing a student has agreed to is ever rewritten.
    • Booking a lesson and enrolling in a class now take a second confirmation that the student agrees to pay. Above the Confirm button the form restates the price with its cadence, spells out how it is collected ("Charged on the 1st of each month, for that month's lessons"), adds the studio's HST so the figure matches the total actually billed, and requires a tick on "I agree to pay 56.50 CAD at booking." before it will submit — separate from, and in addition to, the studio policies the student accepts above it. Reserving a time weekly quotes the per-lesson fee and the most it can add up to ("up to 12 lessons, 678.00 CAD in total"), since a week another student takes first is simply not booked. Free offerings have nothing to agree to and show no price block.

    Fixed

    • Policies are readable where students have to accept them. A policy typed as plain paragraphs — the normal way to write one, with no HTML — was being dropped into the booking, enrolment, and signup forms unformatted, collapsing the whole document into a single squashed line with a horizontal scrollbar and words piling on top of each other. Policy text is now formatted the same way WordPress formats post content, so blank lines become real paragraphs, and the acceptance box is styled as a proper bounded reading panel: long policies scroll vertically instead of running off the side of the page, long pasted links wrap rather than forcing the page sideways, and the "I have read and agree" tick stays in view. Policies written with HTML are unaffected. The studio registration page was also missing the plugin's stylesheet entirely, which is why the problem was at its worst there.
    Downloads