What's new
Improved — Every page now shares one layout shell
Status: Pending enablement (deploys with the next release)
- All signed-in pages now share a single layout foundation — the same
background colour, content width, padding and section rhythm — so moving between Dashboard, Households, Students, Automations, Tasks, Enrolments, Reports and the rest no longer shifts or jumps
- Reading-style pages (changelog, feedback, inbox) use a narrower column
of the same shell so forms and articles stay comfortable to read
- Menus, the navigation drawer and the mobile menu now share the same
panel colour as dialogs, so every floating panel feels like part of one product
Today is about consistency: one shared design system across the whole platform, so every page uses the same buttons, the same status colours and the same layout rhythm.
Fixed — Top-nav menus now work by tap and keyboard, not just hover
Status: Pending enablement (deploys with the next release)
- The Students / Calendar / Gradings / More menus in the top bar were
hover-only, which is unreliable on tablets where the desktop nav shows but there's no mouse. They now open on click/tap, close on Escape (returning focus to the button), close when you click outside, and expose proper open/closed state to screen readers
Improved — Dialogs keep keyboard focus where it belongs
Status: Pending enablement (deploys with the next release)
- Shared dialogs now trap keyboard focus inside while open and return it
to the control that opened them on close — the standard behaviour keyboard and screen-reader users expect
Fixed — Rounded corners no longer leak onto mobile
Status: Pending enablement (deploys with the next release)
- Cards and panels that are only meant to be rounded on larger screens
(e.g. a layout that goes flush-to-edge on a phone) were getting a rounded corner on mobile anyway, because of how the global corner styling matched class names. The flat-12px corner rule now uses proper theme radius tokens, so responsive corners behave per screen size and the "bold" / "minimal" themes still get their own corner treatment
Fixed — Top navigation no longer overflows on smaller laptops
Status: Pending enablement (deploys with the next release)
- On ~1280px-wide screens the top bar's right-hand icons could run off
the edge of the screen. The bar now uses tighter spacing on mid-size screens and tucks the two lowest-priority icons (Reports, Accident Report) into a "More" menu until there's room to show them inline
Improved — Bigger touch targets on phones and tablets
Status: Pending enablement (deploys with the next release)
- Navigation pills, in-page tabs and the top-bar icons now meet the
44px minimum touch-target size on touch devices, so they're easier to tap accurately (no change on desktop with a mouse)
Improved — More status badges share the global colour language
Status: Pending enablement (deploys with the next release)
- The household member list, external events, communications map and
email-template versions now draw their status chips from the same five-colour vocabulary as the rest of the app — so, for example, a "leaver" reads as a calm neutral grey everywhere instead of alarming red in one place and grey in another
- Extended in a follow-up to the external-event detail page (event,
payment and organiser-approval chips) and the member profile header, with shared colours added for awaiting / confirmed / rejected, open / closed and partial-refund states
Fixed — The whole app now actually renders in its intended font
Status: Pending enablement (deploys with the next release)
- The platform ships the Geist typeface, but a leftover line in the
base styles was silently overriding it with Arial everywhere — so the whole app had been rendering in the system fallback font. Geist now applies app-wide, with a clean fallback stack if it ever fails to load
- Tightened the type scale for a more premium feel: a consistent base
body size and slightly larger card titles, matching the rest of the spacing and heading rhythm
Improved — Subtle motion (first pass)
Status: Pending enablement (deploys with the next release)
- Introduced a shared motion system: the dashboard's sections and stat
tiles now ease in gently as the page loads, and dialogs animate both open and closed (previously they only animated open and then vanished)
- All of it respects the "reduce motion" accessibility setting — if your
device asks for reduced motion, the movement is dropped and only a quick fade remains
Improved — Every page now eases in
Status: Pending enablement (deploys with the next release)
- Navigating between pages now plays a quick, subtle fade-and-rise so the
app feels alive as you move around — applied globally to every signed-in page in one place, rather than page by page
- Slightly more present than the first pass (a touch more movement, still
well under a third of a second), and dashboard cards now lift gently on hover. Fully disabled for anyone who's asked for reduced motion
Improved — Subtle motion (second pass)
Status: Pending enablement (deploys with the next release)
- Building the steps of an automation now animates: adding a step slides
it gently into place, removing one eases it out, and re-ordering steps glides them to their new position instead of jumping
- New shared building blocks for the rest of the rollout: page headers
ease in on load, a "Save → Saving… → ✓ Saved" button state for forms, and a soft one-time row highlight after a table row is saved, paused or retried (so tiny updates don't need a full pop-up notification)
- Reordered the motion so heavy, frequently-used libraries only load
where they're needed (the automation builder), keeping everyday pages lean
Improved — Builder step editor + more consistent status colours
Status: Pending enablement (deploys with the next release)
- The automation builder's step editor now uses the shared dialog, so it
gets the same focus trapping, Escape-to-close and open animation as every other dialog
- The top-nav menu arrows now flip based on whether the menu is actually
open (they previously keyed off hover, which didn't fit the new tap-to-open menus)
- Status chips on the Trials list, the Comms Flows settings tab and the
automation queue panel now use the shared colour vocabulary too
Improved — One colour language for every status
Status: Pending enablement (deploys with the next release)
- Every status the platform shows — active, paused, sent, delivered,
failed, bounced, overdue, scheduled, running, succeeded, cancelled, suppressed and more — now draws from a single five-colour vocabulary: green = healthy, blue = in flight, amber = needs attention, red = failed or blocked, grey = inactive or historical
- The same status is now the same colour and the same word on every
page, and a status the system hasn't seen before still renders as a tidy neutral chip instead of breaking
Improved — Shared building blocks for every page
Status: Pending enablement (deploys with the next release; pages adopt these progressively)
- One standard kit now powers page headers, stat tiles, cards, forms,
tabs, tables and dialogs — so every page gets the same layout rhythm, the same loading and empty states, and the same button behaviour (including the double-click protection on anything that saves)
- Tab strips that overflow on small screens now show a soft fade at the
edge so it's obvious there are more tabs, and the active tab always scrolls into view when you arrive from a link
- Confirmation dialogs follow one pattern: they tell you exactly what
will happen ("This will send to 142 recipients") before you commit, and the confirm button can't be double-pressed
- Tables get a consistent treatment everywhere: a loading shimmer, a
friendly empty state with a next step, a clear error with "Try again", and a card layout on phones instead of a squashed table
Improved — Students directory: clearer confirmations
Status: Pending enablement (deploys with the next release)
- Bulk actions in the member directory now confirm in a proper dialog
that says exactly what will happen — "This will email 23 students who aren't linked to Telegram yet" or "This will set 8 selected students to leaver" — instead of a bare browser pop-up
- Results arrive as quiet corner notifications ("Telegram invites
sent — 23 emailed, 2 skipped") rather than blocking alert boxes, and a failed bulk update keeps your selection so you can retry
Improved — Automations statuses join the shared colour language
Status: Pending enablement (deploys with the next release)
- Run, send and delivery statuses across the Automations Command Centre
now use the platform-wide status colours — a failed run is the same red as a failed email everywhere else, and the colours follow your light/dark theme instead of fixed palette values
Improved — Invoice statuses match everywhere
Status: Pending enablement (deploys with the next release)
- Paid / Unpaid / Overdue chips on the member transactions tab, the
household invoices view and the parent portal now share one colour treatment — previously each surface had its own slightly different shades
Improved — A focused top bar
Status: Pending enablement (deploys with the next release)
- The top navigation bar now shows just the day-to-day essentials —
Dashboard, Households, Students and Register. Smart Planning and Settings have moved out of the top bar (they still live in the menu drawer), so the bar stays focused on what you reach for every session
Fixed — The number pad now appears for security codes on mobile
Status: Pending enablement (deploys with the next release)
- Entering a two-factor / one-time login code on a phone was popping
the full text keyboard, which made no sense for a 6-digit number. The staff login, onboarding setup, parent-portal login and the security settings code fields now bring up the numeric keypad directly, so the digits are right there under your thumb
Improved — Marketing pages: clearer pricing, tidier copy
Status: Pending enablement (deploys with the next release)
- Tightened the public homepage: fixed a sizing glitch on the price,
corrected the brand wording in the header to "AllSorted", and added the same "no per-student fees, no add-ons, no card required" reassurance the rest of the marketing pages carry
Improved — Pricing updated to £69 / month
Status: Pending enablement (deploys with the next release)
- AllSorted's headline price is now £69 per month per club, flat — still
every feature included, unlimited students and staff, 14-day free trial with no card. Updated consistently across the homepage, pricing page, feature page, sport landing pages, comparison tables and the structured data search engines read
Improved — Marketing pages feel alive (and on-brand)
Status: Pending enablement (deploys with the next release)
- Five new club-type landing pages: football, rugby, basketball,
cheerleading and performing arts — alongside the existing martial arts, gymnastics, dance, swimming and multi-sport pages
- The animated 3D scene behind marketing headlines now picks up the
brand accent colour automatically (it was stuck on a hardcoded blue/purple), drifts gently as you scroll, and subtly follows your cursor — and it now stops rendering entirely once it's off screen, so scrolling the rest of the page costs nothing
- Headlines, subheads and buttons now arrive in a quick sequence when
a page loads instead of all at once; the club-type grid cascades in as you reach it
- The product mock-up panels now drift at different rates as you
scroll, giving the stack a sense of depth, and the dashboard numbers count up when they come into view
- All of it is skipped for anyone who has asked their device for
reduced motion
Improved — Attendance marking now slides into place
Status: Pending enablement (deploys with the next release)
- On the register, each student's Absent / Present / Late control is now
a proper segmented switch: a single highlight pill slides smoothly to the option you tap (green for present, amber for late, neutral for absent) instead of the state snapping on and off
- The selected label settles in just after the pill starts moving, so
the change feels deliberate and tactile rather than instant — quick and confident, not bouncy
- Bigger, easier tap targets on phones and tablets (44px), and the
movement is dropped entirely for anyone who's asked their device for reduced motion (the colour still changes, just without the slide)
- Marking logic and saved attendance are unchanged — this is purely how
the control looks and feels
Fixed — Mobile header no longer overflows; bigger tap targets
Status: Pending enablement (deploys with the next release)
- On narrow phones the top bar could run its icons off the right edge.
The changelog, theme and sign-out controls now move into the menu drawer's new "Account" section below the small breakpoint, leaving just the essentials (menu, logo, search, notifications) in the bar — so it fits cleanly even at 320px
- Header buttons (menu, logo, search, notifications, drawer close) are
now full 44px touch targets, easier to tap accurately on phones
- The dashboard activity feed's refresh and filter buttons, and the
inbox cards, also get 44px targets; long activity and inbox text now wraps to two lines instead of being cut off mid-word
- The comms trigger-map gains a mobile pan hint and a soft right-edge
fade so it's obvious each flow scrolls sideways
Improved — A subtle buzz when you mark a register on mobile
Status: Pending enablement (deploys with the next release)
- On phones and tablets that support it, marking a student Present or
Late now gives a tiny confirmation buzz — like a light native-app tap — so coaches taking a register quickly can feel each mark land without looking
- Marking Absent doesn't buzz, and re-tapping a state that's already set
doesn't either; it only fires on a real change you tapped
- It's progressive enhancement: devices without vibration (including
iPhones) behave exactly as before, and it's suppressed if you've asked your device for reduced motion. Attendance saving is unchanged
Improved — Settings tables now read as cards on phones
Status: Pending enablement (deploys with the next release)
- A batch of dense settings and data tables that used to squash into an
unreadable grid on phones now render as clean stacked cards below the medium breakpoint — each row becomes a card with its key fields labelled and full-size (44px) action buttons
- Covered in this pass: Venues, Fees, Timetable (classes), Event types,
Syllabus tags, Audit log (mutations + access), SMS gateway history, the drill library, the automation queue + send history, the billing arrears list and the external-events list
- Desktop is unchanged — the existing tables still show at medium width
and up; this only adds the mobile card layout underneath
Improved — Phone-first grading and calendar screens
Status: Pending enablement (deploys with the next release)
- Grading on a phone now uses a dedicated flow: instead of one
enormous flat list of every candidate, students are grouped into collapsible programme → rank sections (one open at a time) with a sticky filter/summary header and big promote/defer buttons. Desktop keeps its existing two-pane list unchanged
- The calendar now opens to a clean "Agenda" view on phones — a
scannable, date-grouped list of upcoming classes, events and closures — instead of a cramped week grid. A new Agenda toggle appears on mobile only; the month / week / day views and the whole desktop calendar are unchanged
Improved — Class-limit warning is now a corner toast
Status: Pending enablement (deploys with the next release)
- When you mark a student who's over their class limit for the period,
the "still recorded" warning no longer pushes the register down the page. It now appears as a toast in the bottom-right corner, keeping the same orange styling, with an ✕ to dismiss and an automatic fade-out after 10 seconds. Attendance is still recorded exactly as before
Improved — Attendance toggle slide now has momentum
Status: Pending enablement (deploys with the next release)
- The Absent / Present / Late highlight pill now eases in and out as it
slides — building speed from rest and settling into place — instead of the previous snap-and-glide. Still quick (under a third of a second) and still dropped entirely for reduced-motion users
Improved — More pages tuned for phones
Status: Pending enablement (deploys with the next release)
- A pass of page-level mobile polish across the app: the Tasks list gets
a proper mobile card with tap-to-pick status and action menus (instead of cycle-on-tap); grading-day and event-day screens get full-size 44px pass/unsuccessful/undo controls and stacked layouts; the bar charts in Reports become tap-selectable on touch; row actions that were hover-only (event detail, student notes) now stay visible on phones; and the accident-reports filters, Communications composer, Reports and Settings headers stack and size correctly on small screens
Improved — Register status filter matches the attendance switches
Status: Pending enablement (deploys with the next release)
- The All / Present / Late / Absent filter at the top of the register now
uses the same sliding-pill control as the Present/Late/Absent switches on each student: the highlight glides between options with the same momentum easing, tinted to match the filter (green/amber/red, or the accent for "All"). Same look, same motion, reduced-motion respected
Improved — Trial students get the same attendance switch
Status: Pending enablement (deploys with the next release)
- Trial students on the register now use the same sliding-pill attendance
control as regular members — No Show / Present / Late, with the same motion, colours and subtle haptic. A trial you haven't marked yet shows no highlight (so "unmarked" stays distinct from "No Show") and the pill glides in the moment you tap a choice
Improved — Register ad-hoc box moved + clearer input styling
Status: Pending enablement (deploys with the next release)
- The "Ad-Hoc / Catch-up" student search on the register now sits below
the coaches & volunteers section and just above the roster filter, and matches the filter search box (search icon, same shape) so the two read as a set
- Trialling a subtle blue-teal glow on input boxes so it's obvious at a
glance what's editable — applied first to the ad-hoc search and the ⌘K command palette. If it lands well it'll roll out to inputs app-wide
Fixed — Class usage now counts the attendance record, not taps
Status: Pending enablement (deploys with the next release)
- Switching a student between Present, Late and Absent on the register
was nudging their billed class-usage counter every time, so flipping Present↔Late could show silly totals like "17/1 classes used". Usage now only moves when a student genuinely changes in or out of the "attended" state — marking present/late counts one class, switching between present and late (or re-tapping the same state) counts nothing, and going back to absent removes it. The attendance record itself was always saved correctly; this only fixes the usage tally and its warning
Added — Green confirmation toast when a catch-up student is added
Status: Pending enablement (deploys with the next release)
- Adding an Ad-Hoc / Catch-up student to the register now shows a green
success toast in the top-right corner ("… added to the register"), matching the orange limit warning's style — it slides and fades in, holds, then fades down and out after 10 seconds, with an ✕ to dismiss early. If both toasts are showing they stack neatly
Fixed — Could not mark today's register late in the evening
Status: Pending enablement (deploys with the next release)
- Marking attendance and adding ad-hoc / catch-up students could silently
do nothing on the current day at certain times of the evening. The register compares the selected day against "today", but that check used UTC while the selected day is your local date — so in UK summer time (and any timezone ahead of UTC) today's register briefly read as a future date and blocked edits. All these checks now use your local date
Improved — Teal glow on the header search box
Status: Pending enablement (deploys with the next release)
- The Search / ⌘K box in the header now carries the same subtle blue-teal
input glow, so it's clearly an interactive search field
Improved — Every toast now drops in from below the header
Status: Pending enablement (deploys with the next release)
- All pop-up notifications (toasts) across the app now behave the same:
they drop in from the very top and settle just below the menu header on the right, ease in over about 3 seconds with a gentle bounce, sit there for 10 seconds at a softly translucent 80% (with a blur behind so text stays crisp), then take a further 3 seconds to fade down and out — and can still be dismissed early with the ✕. Previously the app's general toasts slid up from the bottom and cleared after 4–6 seconds. Reduced-motion users get a plain fade instead of the drop/bounce
Improved — Register page header + stats rearranged
Status: Pending enablement (deploys with the next release)
- The register top area is tidier and wastes less space. The "Class
Register" title is gone — the selected day is now the heading (weekday + date), with the live "On Mat" total beside it. The + button to add a class/ad-hoc session stays.
- A small inline month calendar now sits top-right (tap any day to jump
there) in place of the date box with prev/next arrows. Future days are disabled; today and the selected day are highlighted in teal.
- The "Updated · Refresh" control moved to a small button in the very
top-right corner instead of taking its own line.
- Roster / On Mat / Health / Lesson Plan now sit in one even four-up row.
The Lesson Plan cell is a toggle that expands the full plan in place below the row (tap again to close).
- Roster and Lesson Plan tiles, plus the selected class pill, now use the
teal-glow / no-fill style; volunteers in the staff panel now match the coaches' teal styling.
Improved — "On Mat" live count is snappier
Status: Pending enablement (deploys with the next release)
- The live On-Mat total already updates the instant a register mark lands
(realtime, no polling); the class live/ended indicator now re-checks the clock every 20s (was 60s) so it flips promptly when a class starts or ends. No extra database load — it's a local clock check
Improved — Register header is now a day-view layout
Status: Pending enablement (deploys with the next release)
- The register top area is now split 40 / 60: on the left, the day title,
the live "On the Mat" total (now bigger, with more room) and the month calendar; on the right, the day's classes listed top-to-bottom like a calendar day view (time on the left, class name beside it), newest-first by start time. The calendar moved from the right to the left.
- The Roster / On Mat / Health / Lesson Plan tiles now have their labels
centred.
- Coaches and Volunteers: Volunteers keep their purple panel; the Coaches
panel now uses the same soft translucent tint treatment (in teal) so the two match in weight.
Improved — Register day-view rows are richer
Status: Pending enablement (deploys with the next release)
- The register header split is now 30 / 70 (calendar narrower). To fill
the wider class list, each class row now shows its venue under the name, a pulsing "Live" badge when the class is in session right now, and a chevron — so the day view reads as a proper agenda instead of leaving empty space. Events get an "Event" tag and chevron to match.
Improved — Class rows show headcounts; mobile keeps simple date nav
Status: Pending enablement (deploys with the next release)
- Each class in the register day view now shows a head-count on the right:
how many are on the roster (or booked, for bookable classes) plus a trials count when there are any — so you can see the size of each class at a glance without opening it.
- On phones the date control is the simple date box with ‹ › arrows again
(the full month calendar is desktop-only, where there's room for it).
Improved — Register header is now three columns
Status: Pending enablement (deploys with the next release)
- The register top area is split 20 / 25 / 55: a left column with the
"Register" title, the selected day + date, the add + refresh buttons and the "On the Mat" card; a middle column with the month calendar; and the day's classes filling the right. The On-the-Mat card now breaks its headcount down by venue when more than one venue is live at once. The class rows have a little more breathing room between them.
Internal — UI system guide
Status: Local-only (developer documentation)
- New docs/ui-system.md: the shared component kit, the status-tone
vocabulary, motion rules, the confirmation pattern and the standard trust microcopy ("Saved", "Queued", "This will send to X recipients"), plus the page-by-page migration playbook
Improved — Register header puts the class list first
Status: Pending enablement (deploys with the next release)
- The day's classes now sit on the far left of the register — it's the
first thing you reach for, so it's the first thing you see
- The big month calendar is now a compact single-week strip
(Monday–Sunday) tucked into the right sidebar, reclaiming a lot of wasted vertical space
- The selected day, quick refresh and "add a lesson" controls move up
into a tidy title bar across the top
- On phones the day picker (date + ‹ › arrows) stays on top so you set
the day first, then scroll the class list underneath
- "On the Mat" live count keeps its place in the sidebar, with the
per-venue breakdown when more than one venue is running
Improved — The register now follows your programme lens
Status: Pending enablement (deploys with the next release)
For clubs running more than one programme (e.g. Dance + Martial Arts + Gymnastics), the register no longer mixes everything together:
- Pick a programme from the lens switcher and the class list shows only
that programme's sessions — a Dance coach no longer scrolls past Taekwondo and Gymnastics to find their class
- Classes that aren't tagged to any programme stay visible in every
lens, so nothing gets accidentally hidden
- A clear banner shows which register you're viewing ("Showing Dance
register") with a one-tap "All programmes" escape hatch for owners and admins
- The roster is always authoritative: once a class is selected, everyone
booked, ad-hoc or on trial for that class appears — even if their main programme is different. The lesson is the source of truth, not the lens
- If you switch lens while a class from another programme is open, it
isn't yanked away — the banner turns amber to tell you the class is outside the current lens, with the switch-to-all option right there
- Single-programme clubs see no change at all
Fix — Register lens now reads the programme each class is actually tagged with
The first cut of the register programme lens checked a column the timetable doesn't populate, so switching lens appeared to do nothing. The register now resolves a class's programme from its "Target Programme" (the same value shown in the timetable), so Dance really does show only Dance classes. Classes left as "Open" stay visible in every lens, as intended.
Improved — Programme lens works everywhere, and a new timetable filter
Status: Pending enablement (deploys with the next release)
- The programme lens now reads a class's programme correctly across the
whole app — the register, the calendar and the day view all honour the same logic, so classes set up before the multi-programme switchover (which only carry the older "Target Programme" link) filter properly
- Pick Dance and you see Dance everywhere; classes left as "Open" stay
visible in every lens, as before
- New Programme filter on the Settings → Timetable page (shown only
when you run more than one programme) so you can quickly narrow the class list to Taekwondo, Dance, Gymnastics, or "Open" classes
Improved — The register's polish, spread across the app
Status: Pending enablement (deploys with the next release)
The sliding-pill toggle and the teal focus-glow that debuted on the register now show up in more places, for a more consistent feel:
- Sliding-pill filters — the animated highlight that slides between
options is now used on the Households status / member-count / plan filters, the Calendar view switch (Month / Week / Day / Agenda) and event time filter, and the Dashboard retention period selector
- Teal search glow — the Students, Households and Calendar search
boxes now carry the same subtle teal halo that brightens on focus
- Dashboard header — gains a small "Dashboard" eyebrow above the
club name to match the register's title styling
Single-programme/simple pages are unaffected; this is styling only — no change to what any filter does.
Improved — Inbox now uses the standard page width
Status: Pending enablement (deploys with the next release)
- The Action Inbox previously sat in a narrow reading column; it now
uses the same content width as Dashboard, Students, Households and the other main pages, so moving between them no longer shifts the layout.
Improved — Comms-flow pages now use the standard width
Status: Pending enablement (deploys with the next release)
- The Trigger Map, Comms Flows hub and Flow Simulator all sat at
different widths (1400px / 1024px). They now use the same content width as the rest of the app, so the layout no longer jumps when you move between them.
Improved — Accident report pages now use the standard width
Status: Pending enablement (deploys with the next release)
- The Accident Reports list and the individual report view were full
width (and uncapped); they now sit in the same content width and padding as Dashboard, Students, Households and the other main pages.
Improved — Every form field now has the teal glow
Status: Pending enablement (deploys with the next release)
- The teal focus-glow that started on the search boxes now applies to
every text field, dropdown and text area across the signed-in app — search bars, settings forms, modals, everywhere — for one consistent, on-brand input style
- The halo is gently visible at rest and brightens when you click into a
field, so it's always clear what's editable
- Public pages (login, member portal, trial booking, the marketing site)
are deliberately left with their own styling
Improved — One consistent control language (rolling out)
Status: Pending enablement (deploys with the next release)
We're standardising the look of filters, status chips and buttons across the app so every page speaks the same visual language as the register:
- Shared status chips and action/filter chips with one colour vocabulary
- Sliding-pill filters (the register's animated toggle) replacing
hand-rolled tab/filter rows, page by page
- Consistent press feedback on buttons and controls
This entry will grow as each area is converted.
Improved — Status chips share one colour vocabulary
Status: Pending enablement (deploys with the next release)
- The SMS delivery log and the comms-flow trigger map had their own
hand-rolled status colours; they now read from the single app-wide status palette, so "failed" is the same red and "delivered" the same green everywhere.
Improved — Student record reads like a professional member file
Status: Pending enablement (deploys with the next release)
The student page is calmer and easier to scan — less "wall of edit buttons", more SaaS member record:
- A single top-right Actions menu now holds every profile-level
action, grouped into Profile · Membership & Training · Communication · Finance · Admin · Danger zone (with "Forget student" clearly separated and still behind its confirmation)
- The quick status tiles (Insurance, Direct Debit, Emergency & Medical,
Telegram) are now clean read-only summaries — no more "click to edit"
- Inline Edit buttons removed from the read-only cards; editing happens
from the Actions menu, so there's one obvious place to make changes
- A new Needs attention strip under the header surfaces urgent
states at a glance: insurance expiring/expired, no emergency contact, medical notes on file, unpaid invoices, no direct debit, portal invite not accessed, SMS unsubscribed — each jumps to the right place
- All existing edit forms, status changes, transfers and exports work
exactly as before; this is a layout/placement refresh, not a rewrite
Improved — Student record polish (calmer, less blocky)
Status: Pending enablement (deploys with the next release)
Continuing the student-record refresh:
- Actions menu labels are now uppercase for a tidier, more deliberate menu
- Family and classes are combined into one "Household & Enrolment" card
instead of two loose chip rows
- The Portal card is now status-only — invite/impersonate live solely in
the Actions menu, so no action appears in two places
- The four quick tiles (Insurance, Direct Debit, Emergency & Medical,
Telegram) now look consistent, and only turn amber/red when the data genuinely needs attention — a healthy record stays calm and neutral
- The attendance strip reads as a slim "Snapshot" row
Improved — Student view tabs slide like the register
Status: Pending enablement (deploys with the next release)
- The student "view" tabs (Profile, Billing, Attendance, …) now use the
register's pill styling — squarer corners and a teal sliding highlight that glides to the selected tab
- Switching tabs is instant client-side state — it no longer touches the
URL router, so the page never reloads
Improved — Student record header polish
Status: Pending enablement (deploys with the next release)
- Household, Family and Classes now sit side-by-side as three short
sections (instead of stacked rows), using the full width
- Photo consent is shown in a bordered box with a camera icon
- Removed the redundant "View" label from the tab strip
- A subtle status-coloured wash now fades down the top of the record
(green for active, amber paused, red leaver, …) for instant context
Improved — Student list mobile toolbar
Status: Pending enablement (deploys with the next release)
- On mobile the student-list toolbar keeps the everyday controls
prominent — Search, Add, Sort and Filter — and tucks the rest (Select/bulk, Hide names, Group by family, Export CSV, Send enrolment form, Invite to Telegram) into a single "More" menu, so the toolbar is far less cluttered. Desktop is unchanged.
Improved — Student Actions is now a full command centre
Status: Pending enablement (deploys with the next release)
- The student "Actions" button now opens a proper slide-over panel
instead of a small dropdown: a right-side drawer on desktop with grouped, multi-column sections, and a near-full-screen bottom sheet on mobile with large, easy-to-tap rows (icon, title and a one-line hint)
- Actions are organised into clear groups — Status & Membership;
Personal & Household; Progression, Grades & Achievements; Communication & Portal; Billing, Export & Admin; and a visually separated Danger Zone
- Unavailable actions explain why (e.g. "No email on file"); destructive
actions still ask for confirmation
- Fully keyboard accessible (focus trap, Esc/!outside to close, focus
returns to the button) and respects reduced-motion
Improved — Student tab switches feel like a deliberate transition
Status: Pending enablement (deploys with the next release)
- Switching student tabs now plays a subtle ~180ms fade-and-lift on the
new content, and the content area holds a minimum height while a tab loads — so the page no longer shifts under you mid-switch.
Improved — Dashboard & Reports follow the programme lens
Status: Pending enablement (deploys with the next release)
For clubs running more than one programme, picking a lens (e.g. Dance) now scopes the numbers, not just the lists:
- The Dashboard shows that programme's members, attendance, trials,
insurance, direct-debit, retention and data-quality figures, with a "Showing Dance lens" cue in the header. "All programmes" is unchanged.
- Reports gain a context chip ("All programmes" / "Dance lens"), and
the Attendance, Trial Funnel, Events, Insurance and Data-Quality reports now filter to the selected programme.
- Single-programme clubs and "All programmes" behave exactly as before.
Improved — App-wide brand consistency pass
Status: Pending enablement (deploys with the next release)
A sweep across Reports, Settings, Communications, Calendar, Households and the public/enrolment pages to make everything look like one product:
- Hard-coded colours (slate/blue/grey) swapped for the app's tokens, so
light/dark themes stay correct and "blue" reads as the brand accent
- Emoji removed from report/tab/section icons in favour of clean text
- Corner radii normalised (no more oversized one-off rounding)
- Buttons, inputs, cards, tabs, modals and empty states aligned to the
same patterns used on the Dashboard and Students pages
- Calendar/Register keep their full-width operational layout — only their
controls and chrome were restyled to match
Improved — Brand follow-up: Settings icons, Reports header
Status: Pending enablement (deploys with the next release)
- The Settings navigation now uses clean line icons (lucide) instead of
emoji — on both the desktop sidebar and the mobile grid; the mobile dropdown is text-only.
- Reports gains a compact header showing the current report, date range
and active programme lens at a glance.
- Scheduled-report toggle knob now matches the rest of the app's toggles.
- Functional white surfaces (QR codes, email previews, logo plates) and
the semantic category colours (event types, tags) are intentionally preserved.