Changelog

What we shipped, when. Newest first.

Update — 2026-07-15

15 July 2026

15 July 2026

Safer trials, grading and staff invitations

  • Trial bookings now stay on the timetable. A public booking or reschedule

can no longer be submitted for a date when the selected class does not run; date checks follow the club calendar rather than the server’s timezone.

  • Staff invitations find existing accounts reliably, even when the person

already belongs to another club and sits beyond the first page of Auth users. A temporary Auth lookup problem now stops safely instead of creating a second account.

  • External examiner arrangements are session-bound. A lead examiner’s

lines, pairs and current participant can only contain bookings from that scoring link’s own club and assessment session.

  • Publishing assessment results is one-winner safe. A double-click or two

devices publishing together can no longer queue duplicate certificate work; a session containing several linked events only queues the events this request actually published.

Billing and reporting reliability

  • Platform checkout now protects clubs from a second Stripe subscription.

Active, trialling, past-due, unpaid, paused and incomplete subscriptions must be managed rather than duplicated. A genuinely cancelled or expired subscription can still be replaced with a fresh checkout.

  • **Stripe subscription updates fail visibly if their club or group cannot be

read or updated.** The webhook remains retryable instead of being marked complete while the local subscription record is stale.

  • Owner revenue reporting now prefers exact stored pence for invoices and

line items, with the older decimal fields retained only as a compatibility fallback.

  • Scheduled reports require a durable delivery claim. A temporary outbox

database fault no longer falls through to a direct send that could be repeated; installations that genuinely do not have the outbox table yet retain the old direct-send behaviour.

Data access and exports

  • **Member data exports now issue fresh signed links for retained accident-report

files**, whether an older row stored a full Supabase URL or a newer row stores the private object path.

  • Portal sign-in is more fail-closed. A one-time link sets its cookie from

the same successful consume operation, and the optional trusted-device cookie is only issued when its revocation record was stored successfully.

Communications and registers

  • **Scheduled Email, SMS and Telegram now have matching previews and honest

labels.** Single- and multi-channel messages show only the channels actually selected, SMS is no longer described as Telegram, and scheduled history can preview each stored channel snapshot through the guarded send-detail view.

  • **Scheduled sends now reject incomplete channel content before they enter the

queue.** Email requires its subject and body, while SMS and Telegram each require their own message text; one channel can no longer borrow another channel’s content.

  • Register counts now use the same current-member rule everywhere. Expected

counts, opened rosters, capacity figures, member search and attendance writes include only members whose current lifecycle is New or Active. Paused, leaving, archived and unknown statuses remain in historical data but no longer inflate today’s expected attendance.

Under the bonnet

  • A five-part transactional hardening pack has been authored for portal

credentials, refunds, platform checkout, external-event settlement and legacy assessment undo. It is not wired, not applied and has no live effect. The SQL compiles in local Docker with service-role-only privileges and is rolled back after rehearsal; the sensitive behaviours still require review before any deployment.

  • The wider household, enrolment, attendance and waiting-list transaction wave

remains deliberately paused until that review is complete.

Update — 2026-07-13

13 July 2026

13 July 2026

Clearer menus

  • “Comms” is now “Communications” in the main menu, and it links

straight through to Automations, Templates and Flows (with the same access rules as the Comms Centre — staff only see what they’re allowed to).

  • “Money” is now “Finance”.

Finance — see how everyone pays at a glance

  • A new Payment options page under Finance shows, for each household, whether

a Direct Debit is set up (active or pending) and whether a card payment is on file — a single place to spot who still needs to set up payment. Read-only, admin only.

Feedback stays on the timetable

  • Class Pulse now only asks about regular timetable sessions — not events

or one-off / ad-hoc classes — so the “How was today’s class?” prompt only appears where it makes sense.

Staff leave — set your own availability

  • “My availability” now opens a proper editor. From My Leave a staff

member can set which days they normally work, which is what their leave is measured against — previously the link went to a settings tab with nowhere to actually set it.

Your words, your way

  • Call things what your club calls them. A new Settings → Terminology

control lets you set what you call members (Members, Students, Players, Participants…), assessments and grades. The whole app follows your choice. The default is now vertical-neutral — “Member” and “Assessment” — so a brand-new club of any sport reads naturally out of the box; martial-arts clubs just set it to “Students” / “Grading” and everything switches back.

Custom fields — track what matters to your club

  • A new Settings → Custom Fields builder lets you add your own fields to

track per member or per programme — a squad number, an exam board, a registration date, whatever your sport needs. Add them yourself, mark any as sensitive, and they show on the member profile and come out in your CSV export. Suggested fields for your sport are one tap away.

Under the bonnet

  • Vertical-neutral wording. More of the app’s progression wording (belt /

rank / grading headings on reports and grading screens) now follows each club’s own terminology, so a gymnastics or dance club sees its own words rather than martial-arts defaults. Martial-arts clubs are unchanged.

  • Household leaver state stays in step. When the last active member of a

household leaves, the household record now reflects that too.

  • Reliability hardening (from a code review). Several correctness fixes:

saving a member’s custom fields can no longer wipe others if a read hiccups; approving or declining the same leave request from two devices at once can’t both “win”; the after-class feedback prompt can no longer be sent twice for the same class; the feedback save/skip actions now enforce the same “only real, recent timetable classes” rule as the card itself; a department cover-limit that can’t be checked now blocks rather than silently letting a booking through; a failed programme creation no longer leaves a half-made programme behind; and an add-on subscription that hasn’t actually collected payment (incomplete, past-due, unpaid or paused) is now flagged as needing attention instead of counting as paid. Feedback data older than 24 months is now automatically anonymised.

  • Groundwork for a smarter dashboard. We’ve started building an

“action centre” that will gather the things needing your attention — overdue payments, failed messages, cover clashes and the like — into one prioritised list on your dashboard. It’s switched off for now while we pilot it, so nothing changes on your screen yet; more soon.

Update — 2026-07-12

12 July 2026

12 July 2026

Class Pulse — hear how every session landed

  • Members can now rate each class with a tap. After a class, the Member

Portal shows a simple card with four hand-drawn faces — Exceptional, Great, Okay and Not great — asking exactly the right question: “How did the 6pm class on Tuesday go?” For under-16s it gently asks the parent to check in with their child first. One tap saves it; adding a written comment is optional, and there’s always a no-pressure Skip. Only people who actually attended are asked, and only within 48 hours — fresh, honest feedback, never a nag.

  • A push notification 15 minutes after class (“How did it go today?”)

brings members straight to the card — one notification per household, and never for a cancelled class.

  • The feedback card got a glow-up. Four hand-drawn line faces — lime,

green, amber and red (Exceptional / Great / Okay / Not great written centred underneath each) — a proper Skip button, and a little celebration when you answer — a burst of confetti and a “Thanks — feedback saved!” toast. And so it never gets missed, a few seconds after opening the portal the card gently steps forward into the centre of the screen while the page behind dims — one tap anywhere puts it back if now’s not the moment (it only does this once per visit).

  • Comments only when they count. A sad or middling face always offers the

optional comment box (that’s where the detail matters); a happy face just celebrates and moves on, only asking for a comment about one time in three — quick taps, no chore.

  • A new Class Pulse report collates every rating by class, coach, grade,

age and gender, with trends over time — and the dashboard now shows this week’s pulse at a glance, flagging any unhappy faces so you can follow up while it matters. Coaches see their own scores; written comments stay with owners and admins.

  • The report now uses the same hand-drawn faces as the member card

each comment carries the lime, green, amber or red face the member chose, instead of a stock emoji, so the report reads as one with the portal.

  • Exceptional is broken out on its own. The report counts Exceptional

ratings separately (its own stat next to the pulse score), and the weekly trend and every breakdown bar now show a distinct lime band for Exceptional above the green “Great” band — with a colour key — so you can see at a glance how many members loved a class, not just that they were happy.

Staff Leave — a holiday planner built into your club

  • A new Staff page with a wall chart: everyone’s time off on one

colour-coded calendar — annual leave, sick days, and your own custom leave types — with balances, carry-over and bank holidays handled properly (including coaches who work Saturdays).

  • Request and approve in a couple of taps. Staff request time off, the

right person gets notified and can approve or decline with one click — and because the planner knows your timetable, it warns when leave clashes with classes that person teaches, and marks those days “needs cover” on the club calendar.

  • Half days look like half days. A morning off colours the top half of

the day on the wall chart, an afternoon the bottom half — and hovering tells you which. Full days stay full blocks.

  • Leave shows on your main calendar as a toggleable layer, so planning

around absences is finally one screen, not three spreadsheets.

  • The whole module can be switched off in Settings if you don’t need it.

Pay for AllSorted your way — including annually

  • The Billing page now takes payment for your AllSorted subscription

add a card during your trial and you’re set.

  • New annual option: pay for 10 months, get 12. Choose Monthly or Annual

at checkout; annual plans include a 30-day cooling-off period, after which the payment is non-refundable (you keep full access to the end of your paid year).

One price, everything included — £69 covers your whole sport

  • Everything is now included in the £69 plan — courses, training

pathways, competitions, team sports, timed events, apparatus assessment, routine performance and multi-discipline support. No more per-feature add-ons: another reason to move from a system that charges for every module.

  • The only add-on is a genuine additional sport. Run as many programmes

as you like within one sport for £69 — Taekwondo, Taekwondo Tots and Kickboxing are all one martial-arts club. Add a truly different sport (say Gymnastics, then Yoga) and each extra one is £20/month.

  • Tell us your sport in Settings → Modules. Each programme now has a

simple “Vertical” picker (Martial arts, Gymnastics, Dance, Swimming and more). The Billing page shows exactly which sports you run and what — if anything — the extras cost. Unclassified programmes are never charged.

  • Adding a programme is now a proper guided step, not a bare form: a big

“Add programme” button, pick your sport as you go, and a clear preview of exactly what it means for your bill before you confirm anything.

  • Then a few quick questions set everything up for you. Plain-English

yes/no questions — “Do members earn belts, grades or levels?”, “Do you enter competitions?” — pre-answered sensibly for your sport, switch on exactly the right features and leave the rest off. A dance club is never asked about gymnastics apparatus; a swimming club gets race times suggested automatically. Everything can still be changed later with one toggle.

  • The Programs section now leads the page — no more hunting halfway down

for the Add programme button.

  • Friendly confirmations everywhere. Adding, changing, archiving or

restoring a programme now shows a proper toast instead of leaving you guessing whether it worked.

  • Programmes can now be archived. Nothing is ever deleted — archive a

programme you’ve stopped running and it tucks itself out of the way; restore it any time and everything’s exactly as you left it.

Adding a sport mid-year — billing sorts itself out

  • Add an extra sport any time and the billing works itself out. If

you’re paying annually, you’ll be offered a one-off top-up covering the rest of your year at the same discounted annual rate, or a simple £20 a month if you’d rather keep it separate. If you’re paying monthly, the extra £20 just appears on next month’s bill — nothing to set up.

Settings — tidier, clearer, honest about add-ons

  • Settings is now organised into a handful of clear groups, with

communications settings living in the Comms Centre where they belong.

  • Module switches and purchases are now separate. The Modules page is a

clean set of on/off switches that tells you honestly when something is switched on but not part of your plan; anything to do with buying lives on the Billing page. No more prices shown for things that can’t be bought.

  • Dozens of small fixes: clearer error messages, safer buttons that can’t

double-submit, mobile-friendly forms, and “4th student” finally spelt correctly in family pricing.

Register

  • The “Add ad-hoc” button now works the same on desktop as on your phone:

a compact button that expands into the search when you need it, and tucks itself away when you don’t — clearer than a permanently-open search box. (The event register’s “Add walk-in” matches.)

Memberships — include courses in a plan

  • A membership plan can now include courses. Tick “Courses included” on

a plan, pick the courses, and everyone on that plan automatically gets them in their Member Portal — granted when they join, removed when the membership ends. A clear note on the plan form explains exactly how it works, and it’s entirely separate from one-off course purchases.

  • Leavers no longer keep portal extras. Anything gated by an access grant

— courses, video review, pathways — is available while a member is active or paused, and switches off if they leave. Purchase pages now say this plainly before anyone pays.

Staff Leave on the register

  • The register now knows who’s off. If a coach or helper has approved

leave covering a class, the register shows a simple “On leave” note and won’t let them be added to that session (half-days respected — a morning off doesn’t block an evening class). Pending requests show for awareness but don’t block, and someone already on the register can still be taken off. What KIND of leave it is stays private to the leave pages.

Certificates — bigger text, clearer saves

  • Certificate text can now be any size — with a slider. Drag the new

size slider (6–300px) or type any number straight in, even beyond 300. Typing big sizes works properly now too (entering “250” no longer snaps to the minimum as you type).

  • Saving a certificate template now confirms with a toast — success or

failure, uploads included — instead of a message tucked at the top of the page.

Dashboard — a cleaner, more useful home screen

  • Your numbers come first. Active members, attendance, revenue, overdue

and this week’s pulse now sit in a row right under your club name — the glance you open the dashboard for, before any scrolling.

  • The setup checklist gets out of the way. Once you’re half set up it

folds into a slim “Finish setup” pill with a progress ring, tapping to expand — so “Needs you” and “Today” are no longer pushed below the fold.

  • A two-column layout on desktop. What needs your attention (Needs you and

the health charts) sits on the left; your day (Today, Class Pulse, activity) on the right — less endless scrolling, clearer priorities.

  • Better charts. Attendance is now the hero chart, joins-vs-leavers and

revenue share the row beneath it, and revenue is drawn as a trend line so money reads differently from head-counts.

Polish across the app

  • The member profile’s status stands out. The Active/Paused/Leaver pill

now sits snugly above the grade colour with a soft matching glow, and the colour square is slightly smaller so the whole header sits level.

  • Dozens of confirmation prompts that used the browser’s plain pop-up now

use proper in-app dialogs (promoting from a waitlist, archiving plans and fees, cancelling events, and more), and renewing a requirement now names the member in the confirmation.

  • On the public booking page, if something needs completing before you can

book, the page now scrolls straight to it.

  • Event form date mistakes are flagged on the fields themselves; settings

pages share one heading style; back links look and behave the same everywhere; and lots of icon-only buttons gained proper screen-reader labels.

New clubs start ready to go

  • Signing up now sets everything up properly. A brand-new club gets its

trial plan the moment it registers, so features like progression and grading are switched on from the first login instead of showing “Not active” everywhere. Nothing is charged — the trial is just recorded correctly.

  • Setting up your grading also creates your first programme. When a new

club creates its belt or level system, a matching programme appears automatically — no more finishing setup with an empty Programs list.

  • Every module’s setup wizard is now reachable. Apparatus assessment,

fixtures, timed events and disciplines each have their own “Set up” link (previously only progression had one), each starting with the right questions for that sport.

Under the bonnet

  • Every change to a programme — archiving, restoring, or changing its sport —

is now recorded in the audit trail with who did it and what changed.

  • Members-portal access to pathways is now double-locked behind its access

grant, matching courses and video review.

Update — 2026-07-11

11 July 2026

11 July 2026

Member profile: frosted-glass tabs and a flingable Actions button

  • The desktop tab bar is now translucent frosted glass, edge to edge

it sits flush at the top with the member's status colour flowing behind it, and the bar is slimmer now that Actions has moved out of the row. The selected tab lights up in the app's vibrant teal with a soft glow (the same treatment as the register), picking one has the register's satisfying fill and pop, and when the window gets narrow — or you zoom the browser — the items that don't fit tuck into a tidy three-dots menu instead of clipping or scrolling. The bar double-checks itself as the page loads (and whenever fonts or zoom settle), so a tab can never sit half-cut at the edge. SMS is now the first button on the bar itself — always visible, always in the same place — and the three-dots menu only appears when the window is too narrow to fit every tab, holding just the tabs that folded away.

  • Actions is now a floating button you can drag. Fling it to any corner —

it tracks the speed of your throw and lands where the fling was headed, not just where you let go. Park it on the left or right edge and it tucks into a small round menu button. It grips as it nears a resting spot, and it remembers where you left it.

  • Every tab keeps the essentials in view: name, grade, age and contact

stay pinned whatever tab you're on, while the status chips and family card now belong to the Profile tab — so Billing, Attendance and the rest start clean.

  • Nothing changes on your phone.

Update — 2026-07-10

10 July 2026

10 July 2026

A dashboard that earns its place

The home dashboard has been rebuilt around the three questions you actually open it to answer.

  • "What needs me?" — one prioritised list at the top, and every line now

takes you somewhere real: overdue payments (with the amount) open the arrears page, missing-in-action members open the filtered inbox, trials to chase open the calendar's trials view, accident drafts open the draft list. The old "data checks" counts that dumped you on an unfiltered directory now expand in place to show the actual member names, each one a link. When there's nothing to do, it says so and gets out of the way.

  • "What's happening?" — a new Today panel: tonight's classes with one-tap

register links, this week's events with a booking fill bar, today's trials, and a closure notice when the club is shut.

  • "Are we healthy?" — real charts at last: attendance over the last 12

weeks, joiners vs leavers, a 12-month revenue trend (owners and admins only), and a programme-mix donut with the counts alongside. The number tiles now share one style, each with an up/down arrow against last week — and the two tiles that showed the same number are one tile.

  • Coaches get a coach's dashboard: schedule first, no money tiles. On a

phone everything stacks in priority order — needs-you, today, then health.

  • Recent activity knows when to stop. On a phone it shows the latest 10

with a "Show older" tap for the rest; on desktop it lives in a fixed-height panel that scrolls within itself, with a fade hinting when more sits below — either way, the page no longer trails off into an endless scroll.

Telegram: the whole family can now connect

Until now each member could be linked to exactly one Telegram account — if dad connected after mum, mum silently stopped receiving updates. That's gone.

  • **Two parents (or a parent and an older member) can each link their own

Telegram** to the same member. A second connection adds, never replaces.

  • One parent's Telegram covers all their children. Linking a second child

to the same phone used to fail silently — the app said "Welcome!" and linked nothing. Now it just works.

  • Messages go to every connected chat, and a reply from either parent

lands on each linked child's timeline, exactly as replies always have.

  • The member profile shows who's connected — "2 linked: @mum, @dad" — with

the option to unlink one chat or all of them.

  • Also fixed: the "don't ask me again" link in Telegram invite emails

never actually worked — every click showed "Something went wrong". It now opts you out properly.

Clearer invoice actions: "Mark unpaid"

On a paid invoice, the action that reverses a manually-recorded payment is now called "Mark unpaid" (previously "Undo", which sat confusingly next to Refund). It does exactly what it says: the invoice returns to unpaid and no money moves. Refund is unchanged and still the button that returns money.

Grading: published really means locked — everywhere

  • Examiner scoring links go read-only once results are published. Marks,

notes and score-clears are all refused by the server, and the examiner's screen shows a clear banner explaining why. If only part of a multi-event grading is published, only those candidates lock. Unpublishing re-opens scoring.

  • Standalone grading events can be archived, just like grading sessions —

one "Show archived" toggle covers both, and Restore is one click. Archiving only tidies the grading workspace: the event stays on the calendar (cancel it there if it genuinely isn't happening), and nothing is deleted. Published events must be unpublished first — enforced by the server, not just the button.

  • Unpublishing is confirmed safe, and now guaranteed by tests: it never

reverses anyone's grade or progression. It simply re-opens the grading so you can fix a missed double promotion or add notes, then publish again — certificate numbers are preserved throughout.

Accident report drafts: one draft, however many reloads

Saving a draft, reloading the page, and saving again used to quietly create a second copy of the report. The form now remembers which draft it's working on across reloads and keeps updating the same one. If the draft was completed or removed from another device in the meantime, the form says so plainly and offers a one-click way to start fresh.

Scheduled changes: failures can't hide any more

If any member's scheduled status change fails to apply, the daily job is now recorded as a failed run in platform health and raises an alert — previously it could show green while changes silently failed. The run summary still shows exactly how many applied and what went wrong.

Portal invites always arrive

Confirmed and locked in by tests: portal login invites are account emails, not marketing — so a family that opted out of promotional email still receives them.

Schedule a plan change for a future date

Record a membership plan switch today — "move the Smiths to Unlimited from 1 September" — and the system applies it on the right day, for every billing type.

  • Nothing is charged when you schedule it. The first bill on or after the

chosen date is the first at the new price; the confirmation tells you the exact date that will be.

  • A pending change is visible and cancellable. The household's billing

panel shows a chip ("→ Unlimited from 1 Sep") with a Cancel change button — usable any time before it applies. The member profile shows the pending change too.

  • Term plans join in: instalments already invoiced keep their price;

instalments from the chosen date bill at the new plan's rate (the form cautions you when a date lands mid-term). Per-class members switch rate on the date for future class-pack purchases — credits already bought keep full value.

  • Agreed price adjustments don't silently carry over. A discount

negotiated against the old plan is removed when the change applies — the confirmation says so up front, and you can re-add it on the new plan if it still applies.

  • Family discounts recalculate automatically on the new plan, and "Upgrade

now" (with its pro-rata charge) is unchanged for when the switch shouldn't wait.

Telegram: bulk messages and automations reach the whole family

Yesterday's change let two parents link to the same member; today bulk composer sends and automation messages (reminders, follow-ups) go to every linked chat too — previously they only reached whoever linked first.

One "Comms" entry in the sidebar

Communications, Comms Map and Automations were three separate sidebar entries that are really one area. They're now a single Comms entry landing on Messages, with the familiar pills across the top taking you everywhere else — Comms Map is promoted to second, right after the composer. Coaches no longer see an Automations pill that would refuse them; nothing moved for bookmarks or saved links.

Member profile: one status row and a summary that stays put

  • The three stacked strips above a member's tabs (needs-attention, four status

cards, badges) are now one row of colour-coded chips — a problem and its tile are the same thing, and everything the old strips showed is still there, including who's connected on Telegram.

  • Medical information now only surfaces for coaches and above, matching

the server's own rules — a read-only account sees whether an emergency contact exists, but not medical details.

  • On a wide screen the profile is one full-width view: name, contact and

status across the top, the status chips using the whole width, and the section tabs pinned in a bar at the top that stays put while you scroll — always one click from Billing or Attendance. The tabs use the same icon + label styling as the phone's bottom bar, with a thin sliding underline marking where you are. On a phone, nothing moves.

Insurance display: your choice, per club

Not every sport tracks member insurance. Settings → Modules now has an Insurance toggle — on by default (nothing changes unless you switch it off), per club or per programme. Turning it off hides the Insurance chip from member profiles; your insurance data, edits and reports are untouched and the chip returns the moment you re-enable it.

Comms pills now on the phone's landing view

Opening Comms on a phone lands on the recipient picker — and the section pills (Comms Map, Automations, Templates, Deliverability) lived only on the compose step, so on mobile there was no way to reach the rest of the area. The pills now sit at the top of the landing view too, in the same swipeable row.

Medical notes: double-locked on screen

The Emergency & Medical popup now checks permissions itself before showing medical notes — a second lock behind the button that already did. Staff with medical access see no difference; everyone else can't see medical notes even if a future screen accidentally offered the popup.

More background jobs that can't fail silently

The same honesty applied yesterday to scheduled status changes now covers five more daily jobs — annual requirements, audit housekeeping, the billing run, tomorrow's lesson plans, and the comms-flow dispatcher. A failed run shows red in platform health and alerts the team, while routine notices (like a monthly housekeeping reminder) don't cry wolf. The "Mark unpaid" confirmation dialog also now says "Mark unpaid" throughout, instead of mixing in "Reverse payment" wording.