Widows Sons MBA
Home Gallery Member Portal Admin Login
Home › Durham › Ghost-Rider Gallop › Photos

Photos

Ghost-Rider Gallop - Saturday, 02 May 2026

Add Photos
Ride photo
John Stevenson 02 May
Ride photo
John Stevenson 02 May
Ride photo
John Stevenson 02 May
Ride photo
John Stevenson 02 May
Ride photo
John Stevenson 02 May
← Back to Ride Details
Download

GASKET Group Activity Signup Keeping Everyone Together

User Guide | Feedback | Privacy Policy

© 2026 Sean Lyons. All rights reserved.

Release History

v9.11.2 Current
Bug Fixes
  • Fix: Telegram messages with _ or * in road names/bike models/ride titles now retry as plain text instead of silently failing
  • Fix: ride signup list now shows rider's home chapter, not the host ride's chapter
  • Telegram adoption rollout now shows live per-rider progress — email, WhatsApp, and reason for any skips
  • Rollout button locks on completion; not-invited riders listed by name with no-email warning
  • Rollout only targets uninvited riders — safe to re-run without re-emailing everyone
  • Fix: wizard chapter approval no longer crashes — all role inserts now idempotent (ON CONFLICT DO NOTHING)
  • Fix: Telegram adoption page 500 on load — broken route name corrected
  • Fix: smoke test checklist now persists across form submits using localStorage
v9.11.1
Bug Fixes (hotfix)
  • Fix: wizard chapter approval UniqueViolation — initial hotfix (superseded by 9.11.2)
  • Fix: Telegram adoption page 500 — broken route name (initial fix)
  • Fix: smoke test checklist localStorage persistence (initial fix)
v9.11.0
Notification Preferences, Telegram Adoption Tracker & Fixes
  • New: per-type notification preferences in portal — toggle email/messenger per notification type
  • New: Telegram adoption tracker — per-chapter stats, pending list, rollout button
  • All notifications now fire on both email AND messenger (WhatsApp/Telegram)
  • Telegram auto-confirmed on connect — no admin action needed per member
  • Per-chapter Telegram rollout button on chapter edit page
  • New: Setting Up Telegram guide available in Send Guide
  • Portal inbox expanded — reminders, announcements, subs and rollout all create bell notifications
  • Fix: ride reminder said 'tomorrow' regardless of actual ride date
  • Fix: deleting a rider crashed on NOT NULL constraint in push_deliveries
  • Fix: guest apology not cleared when rider re-signs up under same road name
  • Fix: admin signup alerts were incorrectly routing to the signing-up rider's Telegram
  • Fix: vote open was not sending email to eligible riders
v9.9.3
Telegram Notifications (Trial) & Apology Fix
  • New: members can connect Telegram via a secure deep link on the portal dashboard
  • New: Telegram trial access gated per member — enabled by super admins on the member edit page
  • New: all Telegram messages logged under Admin → Message Logs → Telegram
  • New: test message button on member edit page for connected riders
  • New: bot auto-replies to incoming messages explaining it is a one-way service
  • Fix: guest apologies (submitted without an account) now cleared when rider signs up for the same ride
v9.9.2
Super Admin Notifications & Officer Title
  • New: super admins choose which chapters they receive vote result emails for
  • New: Warden role can display a custom title per chapter (e.g. Road Captain)
  • Fix: portal login restored — missing allow_associates column patched
v9.9.1
Voting Fixes & Associate Eligibility
  • Fix: merging members no longer crashes when both riders have vote records
  • New: votes exclude associate/partner members by default — toggle to include them
  • Recipient count updates live when the associate toggle is changed
  • Associates included badge shown on vote detail when enabled
v9.9.0
General Voting System
  • Create chapter, regional, or national votes — draft, open, then close
  • Plurality win: highest vote-getter wins; abstain winning or a tie = fail
  • Blind or open voting; prospect eligibility toggle per vote
  • Members notified via portal inbox + push when a vote opens
  • Scoreboard: invited / responded / % / not-yet-voted (with names on public votes)
  • Edit drafts, auto-close on deadline, extend deadline by any number of days
  • Email all admins in scope on close with outcome and full results
  • Copy-to-clipboard WhatsApp messages for opening announcement and results
  • Votes tab in the member portal when an open vote exists
v9.8.0
Prospect Vote Toggle & Email Blacklist
  • New: Per-chapter votes_enabled toggle — SA/CA can disable the prospect voting system
  • New: When disabled, vote step hidden on prospect profiles and trigger bypassed entirely
  • New: Min trial rides now configurable per chapter in chapter settings (default 6)
  • New: Wizard Step 5 asks whether chapter uses prospect voting and qualifying ride count
  • New: Email blacklist — block specific addresses from signing up for rides
  • New: Blacklist managed at Admin → Members → Email Blacklist (add with reason, view list with added-by and date)
  • New: Add to Blacklist / Remove from Blacklist button on rider profiles (super admin only)
  • New: Red 🚫 Blacklisted badge on rider profile and members list
  • Fix: Removed duplicate Chapter model columns (min_trial_rides, portal_show_subs)
v9.7.1
Wizard UX Polish & Maintenance Mode
  • New: Maintenance Mode — SA toggle in Site Settings, or MAINTENANCE_MODE=1 env var in Railway
  • Fix: Wizard officer emails now pre-filled from chapter slug (president@, vp@, secretary@, treasurer@, warden@)
  • Fix: Wizard postcode fields auto-uppercase and block invalid characters
  • Fix: Wizard bank account/sort code fields restrict to digits only on mobile
  • Fix: Wizard approval commit now fully rolls back on DB error with clear error message to SA
v9.7.0
Onboarding Wizard & In-App Documentation
  • New: Chapter Onboarding Wizard — invite-based 6-step setup flow for new chapters
  • New: Supports primary and co-Chapter Admin — each gets their own account and password setup email
  • New: CSV import for officers and members with downloadable templates
  • New: All officers receive admin accounts with role-appropriate permissions on approval
  • New: Changes Requested flow — admin adds notes, GA receives email and can re-submit
  • New: Rescind Invite button to cancel and permanently delete a pending wizard invite
  • New: In-App Help section in admin sidebar with four role-specific guides
  • New: Secretary Toolkit, Treasurer Toolkit, Warden's Ride Guide, and Overview docs
  • Fix: Portal inbox messages now reach all chapter members, not just push subscribers
  • New: Per-chapter WhatsApp toggle — SA can enable/disable WhatsApp per chapter
  • New: WS Membership Flag — members marked as WS Member, Associate, or Unconfirmed
  • New: National levy and membership counts only include confirmed WS members
  • New: Dashboard warning when members have unconfirmed WS status
  • Fix: Google Maps route links now open correctly on iOS — switched to ?api=1 parameter format
v9.6.0
Treasurer's Toolkit
  • New: Finance section in admin sidebar for treasurers and super admins
  • New: Subs dashboard — chapter/year view with Expected, Collected, Outstanding summary
  • New: Set per-chapter subscription due dates
  • New: Filter tabs — All, Outstanding, Paid, Exempt
  • New: Payment confirmation email sent automatically when treasurer records a payment
  • New: Export subs data as CSV or PDF (AGM-ready)
  • New: Automated reminder sequence — 6-week, 2-week, due-date, fortnightly chase
  • New: 12-week escalation emails to President and Treasurer for overdue members
  • Honorary members shown as Exempt throughout
v9.5.4
Cross-Chapter Merge: Sponsorship Fix
  • Fix: Merging a rider who has sponsored prospects no longer throws a 500 error
  • Sponsorship records are transferred to keep_rider before the merge_rider is deleted
  • Fix: Duplicate sponsor_id column definition removed from Rider model
v9.5.3
Portal Code via Email
  • New: Portal login codes sent to email as well as WhatsApp (if member has email on file)
  • Verify page confirms which channels the code was sent to
  • Supports gradual transition away from WhatsApp for member login
v9.5.2
Email Provider Switch Fix
  • Fix: GMAIL_ENABLED=false now correctly bypasses Gmail API (flag was previously ignored)
  • Fix: SENDGRID_ENABLED=false likewise now respected
  • This unblocks clean switching to wsmba.uk SMTP without deleting Gmail credentials
v9.5.1
Cross-Chapter Merge Fix
  • Fix: Merging riders across chapters no longer throws a 500 error
  • Fix: EmailLog entries now transferred before delete (was causing PostgreSQL FK violation)
  • Fix: MemberSub and MemberNote records now transferred on merge (previously silently deleted)
  • Fix: Duplicate signups on the same ride are deduplicated before transfer
  • Super admins can now merge riders from different chapters
v9.5.0
WSMBA Branding & National Infrastructure
  • New: WSMBA black and gold email branding across all 13 email templates
  • New: wsmba.uk SMTP email support — gasket@wsmba.uk ready to activate
  • New: GMAIL_ENABLED / SENDGRID_ENABLED flags for clean provider switching
  • Improved: Voice comms move buttons now taller for glove-friendly tapping
  • Fix: Gunicorn now runs 3 workers with 120s timeout in production
v9.4.1
Hotfix: Cross-Chapter Voice Comms
  • Fix: Join Ride Comms button now appears for riders signed up for a ride in another chapter
  • Fix: voice comms page grants access based on signup, not chapter membership
v9.4.0
Send Guide, Live Tracking & Profile Sync
  • New: Send Guide — email any member a PDF guide from admin panel or portal tools page
  • New: multi-select recipients with search and chapter filter; multiple guides sent as one email
  • New: Live Tracking idiot guide (Traccar Client setup for Android and iPhone)
  • New: Sync Admin Profiles — auto-links admin accounts to member profiles by phone/name match
  • New: auto-sync missing phone and email into Chapter Officer directory entries
  • Improved: members list and rides list load much faster — batch queries replace per-row COUNTs
  • Improved: 8 new database indexes on signups, riders, rides, and push_deliveries
v9.3.0
Admin Tools & Chapter Directory
  • New: portal Admin Tools page — accessible via 'Home ▾' for admins; code generator moved here
  • New: Chapter Directory — GASKET chapter officers and external chapters with call/email buttons
  • New: collapsible accordion directory with live search
  • New: external chapter contacts managed by super/national/regional admins at Organisation → Directory
v9.2.0
Portal Notification Inbox
  • New: Inbox in the portal (bell icon) — every push announcement lands here for all chapter members
  • New: unread badge on bell icon, clears when inbox is opened
  • New: push member picker on ride announce page — select specific recipients
  • New: push notification log at Comms → Message Logs → Push
v9.1.0
Push Notification Controls
  • New: messaging page defaults to push channel; member picker lets you select specific recipients
  • New: CC super admins picker — choose individuals rather than all-or-nothing
  • New: 🔔 bell icon on members list for push-enabled riders
  • Improved: ride announce defaults to push; custom push title and body fields
v9.0.0
Comms 2.0: Push Notifications
  • New: members can opt in to push notifications from the portal dashboard
  • New: ride announcements can be sent as push notifications alongside or instead of WhatsApp — free, instant, no rate limits
  • New: Discord voice comms page shows a 'Join Discord Server' button for first-time Discord users
  • Fix: portal service worker now registers correctly, enabling push opt-in and PWA features
v8.7.1
Admin Code Login Fix
  • Fix: admin-generated portal codes now work on the standard login page — member enters phone then uses the admin code instead of WhatsApp
v8.7.0
Admin Portal Code Login
  • New: admins can generate a 6-digit login code for any member from their rider profile or from the portal Member Login Help card
  • New: cascading Region → Chapter → Member selector for super admins on the portal
  • New: members with no WhatsApp can log in using an admin-generated code
v8.6.4
Voice Comms Hotfix
  • Fix: portal dashboard now shows 'Join Today's Ride Comms' button for rides with live status
v8.6.3
Voice Comms Fixes
  • Fix: Leave Voice button — disconnect from all Discord channels directly from GASKET
  • Fix: Voice comms page keeps screen awake — no more screen timeout mid-ride
v8.6.2
Analytics Fixes
  • Fix: Unique Riders tile excludes visitors from other chapters and resigned members
  • Fix: Start Point Preferences counts all non-cancelled signups, not just attended
  • Fix: Inactive riders list now shows names with links to member profiles
v8.6.1
Email Deliverability Fix
  • Fix: outbound emails now include plain text alternative — improves deliverability to Apple/iCloud
  • Fix: From header now shows 'GASKET' as display name
v8.6.0
Member Promotion & Portal Leaderboard
  • New: promote any member to admin directly from their profile — role selector, auto-generated username, setup link sent via WhatsApp
  • New: remove admin access from member profile — permanently deletes linked admin account
  • New: 'Most Rides This Year' leaderboard on portal dashboard — top 5 by attended rides, per-chapter opt-in
  • New: portal leaderboard shows this year's count and all-time total per rider
  • Improved: analytics Top Riders now includes apologies column and ranks by rides attended
  • Improved: Unique Riders tile counts distinct riders who have signed up, not raw member records
v8.5.0
Discord Voice Comms 2.0
  • New: voice comms page rebuilt — setup helper walks new riders through Discord account creation
  • New: one-tap channel switching between General Ride and Management without leaving GASKET
  • New: page auto-detects when you join or leave Discord voice — no manual refresh
  • New: member chips show road names, not Discord display names
  • New: /portal/voice/today fixed URL for WhatsApp messages and QR codes
  • New: Discord bot maintains live voice state cache via WebSocket — member lists now accurate
  • Fix: Open Mic only — PTT mode removed from ride-day voice page
  • Fix: portal dashboard comms button only shows when Discord channels are set up
v8.4.4
Portal Login Fixes
  • Fix: portal magic codes now reach riders whose phone numbers were stored with spaces or dashes
  • Fix: portal login lookup strips formatting from stored numbers before comparing — prevents silent mismatches
  • Fix: failed phone lookups now written to audit log so they're traceable
  • Fix: WhatsApp send failures due to unrecognisable phone format now logged to database instead of disappearing silently
  • Fix: Railway build — removed nixpacks.toml and comms-2.0 dependencies that were breaking the build environment
v8.4.3
Voice Channel Fixes
  • Fix: voice channel button only appears on the correct chapter and ride day
  • Fix: voice channel uses the correct ride room and rider name
  • Fix: member profile status bar now shows current chapter role correctly
  • Fix: missing trusted_device_token migration applied
v8.4.2
Discord Voice Comms
  • Portal voice button now launches Discord directly — tap to open the ride channel in the app
  • Discord deep link replaces LiveKit for audio on ride day (falls back to LiveKit if no Discord channel set up)
  • Management channel TTS announcements — bot announces when riders join or leave the ride leaders channel by road name
  • Riders can add their Discord username in portal profile settings for name matching
  • Admins can add their Discord username in their admin profile
  • WhatsApp signup confirmations no longer include a voice link — portal is now the entry point for ride comms
v8.4.1
Portal Login & WhatsApp Log Fixes
  • Fix: portal magic code messages now correctly linked to the member in WhatsApp logs (previously logged with no rider ID, making them invisible when filtering by member)
  • WhatsApp logs: added phone number search so you can look up messages by number directly
v8.4.0
Ride Day Voice Comms
  • Built-in WebRTC voice — General Chat and Ride Leaders channels, no app needed
  • PTT (default) and Open Mic modes with persistent preference per device
  • Portal dashboard shows Join Today's Ride Comms button on ride day
  • Any chapter member can join, not just signups
  • Participant chips + speaking indicator + join chime
  • Voice enabled per chapter in Chapter Settings
  • Portal activity now in audit log
  • Fix: reliability stat excludes apologies; linked ride signups shown correctly
  • Fix: GAS numbers no longer lost on deploy for same-named members across chapters
v8.3.0
Membership Numbers, Pipeline, Voting & Member Portal
  • GAS-XXXXX membership numbers — sequential from 26, numbers 1–25 reserved, retired numbers never reused
  • Prospect pipeline — journey tracking from prospect date through trial rides, vote, patching and branding
  • Trial ride threshold configurable per chapter; count shown on profile and members list
  • Blind chapter vote — auto-triggers at threshold, 66% to pass, 7-day deadline, day-3 reminders
  • Resigned members: number archived as retired, cleared for fresh assignment on re-join
  • Honorary members: subs shown as Exempt
  • Member Portal at /portal — mobile-first, WhatsApp magic code login, trusted device cookie
  • Portal: dashboard, ride history, membership journey, profile editing with postcode lookup
  • Member import/export overhauled — now includes membership status, GAS number, joined date, address, emergency contact, and prospect pipeline dates
  • Export a blank member list to get a pre-headed CSV template for bulk data entry
  • Vote outcome emails use branded HTML template; prospects not notified of result either way
  • Fix: admin sessions now persist correctly across browser restarts
  • Fix: PWA cache updated — iOS/Android users on v8.2.x now receive latest version automatically
  • Settings: Run Nightly Cron button for super admins; Members list: unassigned GAS number counter badge
v8.2.6
WhatsApp Login + Trusted Browser
  • Super admins now receive magic code via WhatsApp as well as email
  • Trusted browser cookie — skips magic code on return visits for 30 days
v8.2.5
Fix: Signup Error on Cross-Chapter Rides
  • Fix: UnboundLocalError when a rider signed up for a ride from a different chapter
v8.2.4
Fix: PWA Cache + Cron Ride Status
  • Fix: Service worker caching stale admin CSS causing expanded menus after deploy
  • Fix: Nightly cron now correctly auto-completes past rides
v8.2.3
Fix: Session Persistence
  • Fix: Admin sessions now persist across browser restarts and multiple devices
v8.2.2
Fix: Calendar + Dietary Requirements
  • Fix: Multi-day calendar events displaying incorrectly
  • Fix: Dietary requirements field incorrectly marked as required on signup form
v8.2.1
Fix: Multi-Device Login
  • Fix: Logging in on a second device no longer invalidates the first device's session
v8.2.0
Audit Log + Navigation
  • Every significant action recorded — who, what, when, and from where
  • Covers logins, failed attempts, ride/member/signup changes, exports, PDF downloads, bulk WhatsApp sends
  • Audit Log page under Settings (super admin) — filterable by action, actor, date; CSV export
  • Sidebar reorganised into clearer sections with accordion behaviour
v8.1.0
Magic Code Login + Session Security
  • Passwords replaced with 6-digit magic codes sent by email — nothing to remember or lose
  • Session expiry: admins automatically logged out after a configurable period (default 7 days)
  • Force Re-login button in Settings — instantly ends all other admin sessions
  • Shadow accounts: test role configurations before assigning to real admins
  • Rollback switch: MAGIC_CODE_LOGIN=false reverts to password login if needed
  • Fix: messaging recipient filter consistent across WhatsApp and email — super admins no longer leak into chapter sends
  • New: CC super admins checkbox on messaging page for explicit opt-in
v8.0.0
Membership System + Ride Management Voice
  • New: National roles — Vice Chairman, Director, National Secretary and more
  • New: Org structure pages — location matrix and national role/regional access views
  • New: National roles can be restricted to specific regions
  • New: Each ride auto-creates a management voice channel alongside the general one
  • New: 🎙️★ button on attendance page sends management channel link one rider at a time
  • Confirmation prompt recommends keeping management channel to 5 or fewer riders
v7.2.5
Bulk Tracking & Voice Links
  • New: Send Tracking to All button on attendance page — one tap sends tracking link to every rider with a phone number
  • New: Send Voice to All button on attendance page — same for voice links
  • Both buttons confirm before sending and report how many were sent
v7.2.4
Shorter WhatsApp Links
  • All links in WhatsApp messages now use compact short paths (/c/, /u/, /v/, /r/, /t/, /x/, /admin/p/)
  • Unsubscribe tokens shortened from 43 characters to 11
  • Previously sent links still work
v7.2.3
Manual Member Merge
  • New: Manual Merge section on the Merge Members page — merge any two profiles regardless of phone number or name
  • Useful for walk-ups added without contact details, or profiles with different name spellings
  • Type-to-filter narrows both lists simultaneously to find members quickly
v7.2.2
Leaderboard Fix
  • Fix: Top Riders leaderboard on ride view now only counts attended rides (not just signups)
  • Fix: Leaderboard now scoped to the same chapter as the ride — no cross-chapter inflation
v7.2.1
Two-Step Unsubscribe
  • Fix: Unsubscribe link now shows a confirmation page before opting out — prevents accidental opt-outs from mis-clicks or email scanners
v7.2.0
Calendar Subscriptions
  • New: Chapter calendar subscription feed — riders subscribe once, new rides appear automatically
  • New: Subscribe button on chapter page with webcal:// link, copy URL, and per-platform instructions
  • New: Calendar feed toggle in Chapter Settings alongside tracking and voice flags
v7.1.0
Split Start Routes & UX Improvements
  • New: Split start routes — plan separate approach routes from each start point with two GPX files
  • New: Route Planner M/2/A pin leg selector — tag each waypoint as Main only, Secondary only, or All
  • New: Collapsible sidebar — shrink to icon-only strip for more screen space
  • Fix: Route Planner distances now in miles; split mode shows separate distance and time per start
  • Fix: Public ride detail map draws correct coloured segments for split routes
v7.0.1
Polish & Fixes
  • Fix: Attendance page now shows riders from linked chapters
  • Fix: Chapter rides PDF — ride title column wraps correctly
  • Enhancement: Inline status dropdown on All Rides page (rides.edit permission)
  • Enhancement: Sidebar scroll position persists across page navigation
  • Enhancement: Copy to Clipboard button on ride announce page
  • Enhancement: Information only flag on rides — hides signup form publicly
  • Automation: Duplicate member detection — WhatsApp alert sent to chapter admins when two rider profiles share the same phone number
v7.0.0
Ride Day Safety: Live Tracking + Voice
  • New: Live GPS tracking — riders appear as named pins on a real-time map
  • New: Ride voice channel — always-on group audio over 4G/5G, no range limit
  • New: Per-chapter feature flags — enable tracking and/or voice per chapter
  • New: Permission controls — assign access via role templates (rides.use_tracking / rides.use_voice)
  • New: Guest Links button on attendance page — send tracking + voice links to walk-up guests
  • Linked rides: riders signing up via a linked chapter automatically receive voice and tracking links
  • Voice link included in signup confirmation WhatsApp (if ride has a voice channel)
  • Voice channel auto-created on ride publish, auto-deleted on completion
v6.6.4
Hotfix: Route Planner — Edit Dropdown
  • Fix: 'Edit Existing Route' now shows all upcoming rides, not just ones with saved routes
  • Fix: Past rides no longer appear in the dropdown
  • Rides with an existing route are marked with ★
v6.6.3
Hotfix: Route Planner
  • Fix: Loading a second route after clearing all no longer fails
  • Fix: 'No pins' message no longer disappears after switching routes
v6.6.2
Hotfix: Route Planner Load
  • Fix: Edit Existing Route now shows all rides with waypoints, not just upcoming ones
  • Fix: Rides with no date no longer crash the route planner page
v6.6.1
Route Planner: Edit Existing Routes
  • Load an existing ride's route into the Route Planner for editing
  • Start points, waypoints and route name all restored on load
  • Save buttons change to 'Update Ride' / 'Save to New Ride' when editing
  • Updating replaces the existing waypoints directly
v6.6.0
Route Planner
  • New: Route Planner for Road Captains (Rides → Route Planner)
  • Pick Main and Secondary start points from saved club locations
  • Drop waypoint pins on the map — route road-snaps automatically
  • Place names filled in automatically via reverse geocoding
  • Drag to reorder, undo, clear — live distance and time stats
  • Download GPX for sat-navs and GPS devices
  • Save to an existing ride or create a new ride pre-filled with start points
v6.5.3
Bug Fixes + Photo Upload UX
  • Fix: Feedback form 500 error on submission (WhatsApp rate limit timeout)
  • Fix: Analytics totals now include Events, not just Rides
  • Fix: Completed Events count was capped at 20 — now accurate
  • Upload progress overlay shown while photos are uploading
  • Approval notice after upload — users told photos need admin approval before going live
v6.5.2
Daily Digest Fix
  • Fix: Apologies were labelled as 'Cancelled' in daily digest emails
  • Fix: Multi-chapter admins now receive one consolidated digest instead of a separate email per chapter
  • Fix: Signups and apologies were missing from single-chapter digest emails
  • Fix: App updates section now appears in both single and multi-chapter digests
v6.5.1
Edit Signup + UX Improvements
  • Action buttons moved to first column on all admin tables
  • New: Edit Signup — update pillion, guest, bike, dietary, contact without removing rider
  • Fix: Cancellation page 500 error for phone-number cancellation flow
v6.5.0
Role & Permission Improvements
  • New 'Ride Creator' role template for VPs, Secretaries and ride planners
  • Waypoints now correctly require rides.edit permission
  • Start points now correctly require chapter.manage_start_points permission
  • Announcement summary only sent to the admin who triggered it
  • Linking a ride automatically links the other ride back
v6.4.0
Nightly Cron + Auto-Complete + Deploy Digest
  • Rides/events auto-complete at midnight after their date
  • Badge awards fire automatically on auto-completion
  • Single nightly cron replaces separate digest triggers
  • Daily/weekly digest emails include recent app updates
  • Attendance page shows completed rides from last 7 days
  • Banner on completed rides confirms attendance still editable
v6.3.1
Hotfix: Multiple Rides/Events on Same Day
  • Same-chapter date clash is now a warning, not a block
  • Multiple rides or events on the same day now allowed
  • Inline date checker shows amber warning instead of red error
v6.3.0
Analytics: Rides vs Events + Feedback Fix
  • Ride stats now exclude events (attendance, leaderboard, rides per month)
  • Events shown as a separate count on all analytics views
  • Chapter analytics shows completed events table with attendance
  • Region/All-Regions comparison tables include Events column
  • Fix: feedback form no longer crashes if WhatsApp notification fails
v6.2.0
Apologies System + Attendance Improvements
  • Riders can register apologies on any ride page
  • Cancelling a signup automatically registers apologies
  • Last-minute apology button on attendance page (reversible)
  • Apologies shown separately from no-shows in analytics
  • Attendance start dropdown now includes waypoints
  • Rider profiles show apology count separately from no-shows
v6.1.0
GDPR Compliance + Cancellation Link Fix
  • Lodge numbers removed from public sign-up lists
  • Consent notice and checkbox for new riders on sign-up form
  • Returning riders with consent on file skip the checkbox
  • Admin can hide individual sign-ups from the public list
  • New Privacy Policy page at /privacy with footer link
  • Privacy contact email field in Site Settings
  • Fix: requesting cancellation twice no longer breaks the first link
v6.0.0
Email System Overhaul + Chapter Admin Permissions
  • Daily & weekly email digests with chapter activity
  • Digest management page with manual trigger
  • Deploy notifications via email with preview/edit
  • Send to Super Admins, Chapter Admins, or Members
  • Message Logs: WhatsApp and Email tabs combined
  • Chapter admins can edit their own chapter settings
  • President role protected - super admin only
  • App feedback auto-creates GitHub issues
  • Admin list shows phone and email columns
v5.6.0
Notification Grid + Ride Attachments
  • Super admin notification grid for managing all admin preferences
  • Drill-down by region → chapter → admin
  • Attach files (PDF, CSV, images) and links to rides
  • Public/Admin-only visibility toggle per attachment
  • Paperclip icon on rides list shows attachment count
v5.5.0
Admin Enhancements
  • Change rider's start point from ride view (dropdown)
  • Change start point on attendance page too
  • Call riders directly from attendance page (green phone button)
v5.4.2
Bug Fixes
  • Manual deploy notification button in WhatsApp logs
  • Linked ride PDFs now show all riders from both chapters
  • Google Maps route includes secondary start point
  • Google Maps uses destination postcode for accuracy
  • Fixed weather showing for 'None' in Italy bug
v5.4.1
Duplicate Ride Fix
  • Duplicating a ride now copies all waypoints
  • Destination postcode and coordinates now copied
v5.4.0
GPX Import for Ride Routes
  • Import waypoints from GPX files directly into rides
  • Preview on map and assign point roles before import
  • Inline waypoint editing with auto-save
  • Join point checkbox, defaults to disabled
v5.3.7
GPX & Route Fixes
  • Fixed start point name matching for GPX generation
  • Secondary start point now shows in Route list
  • Both start points included in GPX and map route
  • Route calculation includes both starts before waypoints
v5.3.5
Destination & Bug Fixes
  • Fixed: {name} and {road_name} return different values
  • Destination shown on rides list and PDFs
  • Destination included in GPX and route maps
  • PDF download button restored on chapter page
v5.3.3
WhatsApp Log Attribution
  • WhatsApp logs now show which admin sent each message
  • Announcements tracked to the admin who initiated them
  • System messages still show as 'System'
v5.3.2
Secondary Start Point Fix
  • Secondary start point now included in GPX downloads
  • Secondary start point now visible on route maps
  • Route line connects through secondary start to waypoints
v5.3.1
Bug Fixes & UX Improvements
  • Fixed duplicate signups showing on linked rides
  • Added duplicate prevention when same rider signs up twice
  • Signup timestamps now visible on admin ride view
  • Clickable rider names link to profile pages
  • Copy Link button on ride pages for easy sharing
v5.3.0
App Feedback
  • New feedback form for bugs, features, and general feedback
  • Feedback link in footer next to User Guide
  • Super admin panel for managing feedback
  • Notes history with timestamps and user attribution
  • WhatsApp notifications for new feedback
  • Shop tab only visible when chapter has active order window
v5.2.1
Deploy Notification Fix
  • Fixed deploy notifications not reaching all admins
v5.2.0
Hierarchical Analytics
  • New drill-down analytics: All Regions > Region > Chapter > Ride
  • Region admin access for analytics visibility
  • Dynamic leaderboards at every level
  • CSV exports scoped to current view
  • Clickable rows to navigate down the hierarchy
  • Breadcrumb navigation to go back up
v5.1.5
Deployment Notification Test
  • Testing deployment notifications after quiet hours fix
v5.1.4
PWA Navigation
  • Floating home button appears when app is installed on phone
  • Always takes you directly to home/dashboard
  • Fixes navigation issues when viewing PDFs in PWA mode
v5.1.3
Hotfix: Admin Role Display
  • Admin list shows actual assigned roles instead of generic 'Chapter Admin'
  • Legacy admins (pre-RBAC) show 'Legacy Access' badge
  • Admins with no roles show 'No Access' badge
v5.1.2
Admin List Filtering
  • Instant search-as-you-type on all major admin lists
  • Filter Rides by title, destination, and status
  • Filter Members by name, bike, and phone
  • Filter Chapters by name, slug, and region
  • Filter Admins by username, role, and status
  • Filter Start Points by name, postcode, and chapter
v5.1.1
Personal Notification Preferences
  • New 'My Notifications' page for personal preferences
  • Each admin chooses which notifications they receive
  • Super admins can disable deployment alerts, signups, etc.
  • Chapter admins see only their role-relevant notifications
  • Updated Admin & Rider Manuals (Revision 2)
v5.1.0
Self-Service Cancellations & Notification Routing
  • Riders can cancel signups via WhatsApp verification link
  • New 'Notifications' settings page for routing config
  • Control which roles receive signup, cancellation, and order alerts
  • Permission checks enforced on all admin routes
  • Friendly 403 error page explains missing permissions
v5.0.0
Role-Based Access Control
  • 5 default role templates: Chapter Admin, Road Captain, Shop Manager, Social Media Manager, Events Coordinator
  • Assign multiple roles per admin per chapter
  • 28 granular permissions across all features
  • Create custom roles with specific permissions
  • New 'Roles' management in Settings
  • Backward compatible with existing admins
v4.8.0
Ad-hoc Messaging
  • New 'Send Message' feature in Settings
  • Personalization placeholders: {name}, {road_name}, {chapter}
  • Recipients: Chapter Members, Chapter Admins, or All Admins
  • Respects quiet hours and opt-out preferences
  • Opt-out status visible on Members list and profiles
  • Minor bug fixes
v4.7.6
Hotfix: Quiet Hours
  • Fixed race condition causing duplicate message sends
  • Queue processing now uses locking to prevent duplicates
v4.7.5
Quiet Hours Fix
  • Fixed timezone bug causing messages to send during quiet hours
  • Notifications now correctly queue until quiet hours end
v4.7.4
User Guides & Stats Fix
  • Downloadable Admin Guide and Rider Guide
  • Chapter Attendance now includes walk-ups
  • Renamed Attendance Rate to Signup Reliability
v4.7.3
Merge Duplicate Members
  • Merge duplicate member profiles
  • Auto-detects duplicates by matching phone numbers
  • Transfers all signups, orders and photo tags
v4.7.2
New Logo
  • Updated app icon and favicon with new GASKET logo
v4.7.1
Analytics Improvements
  • Fixed attendance rate to only count completed rides
  • Added chapter participation stat to rider profiles
  • Per-ride analytics drill-down
  • Clickable walkup/no-show stats with details
  • CSV exports for analytics data
  • Chapter comparisons (super admin)
v4.7.0
Gallery Improvements
  • Unified photo approvals page (ride + gallery photos)
  • Add ride photos to gallery without duplication
  • Gallery section in sidebar for all admins
  • Pending photo count badge in nav
v4.6.2
Hotfix
  • Fix photo upload opening camera instead of file picker
v4.6.1
Bug Fixes
  • Walk-up form now autocompletes for existing members
  • Photo uploads: auto-resize large images (under 2MB)
  • Photo uploads: take photo directly from camera (mobile)
  • Better upload error messages when photos fail
v4.6.0
Notification Quiet Hours
  • Configure quiet hours per notification type
  • Deploy, badge, signup alerts respect quiet hours
  • Queue notifications for later or skip entirely
  • View and manage queued notifications
  • Settings > Quiet Hours (super admin)
v4.5.0
Admin UX Improvements
  • Region icons (emoji picker or custom image upload)
  • Tree pickers for linked rides (Region → Chapter → Rides)
  • Tree pickers for start points (Chapter → Start Points)
  • Create new start points inline without page reload
  • Search and filter in all pickers
v4.4.0
Regions
  • Chapters grouped into regions
  • Homepage shows regions first
  • Single-chapter regions skip to rides
  • Admin can manage regions
v4.3.0
Chapter Start Points
  • Start points linked to chapters
  • Ride forms filter by chapter
  • Chapter admins can create start points
  • Fix duplicate ride idea submissions
  • Back button for iOS PWA users
v4.2.0
Photo Gallery & Admin Templates
  • Multi-photo upload with drag & drop
  • Upload progress bar and image preview
  • Photo count icon on rides list
  • Admin setup/reset messages now editable
  • Deploy notifications sent to all admins
v4.1.1
Route Map Display
  • Interactive route map with Leaflet/OpenStreetMap
  • Destination postcode lookup
  • Fix waypoint join selection in signup
  • Start/waypoint/destination markers on map
v4.1.0
Route Waypoints & GPX
  • Add waypoints with postcodes to rides
  • View full route on Google Maps
  • Download GPX files for GPS devices
  • Riders can join mid-route at waypoints
v4.0.0
Progressive Web App
  • Install as app on phone/tablet
  • Offline support with service worker
  • Faster loading with smart caching
  • Add to home screen
v3.7.3
Release History Popup
  • Clickable version number in footer/sidebar
  • Full changelog from v1.0.0 to current
v3.7.2
Bot Protection
  • Honeypot field on public forms
  • Time-based check rejects instant submissions
  • Zero friction for real users
v3.7.0
WhatsApp Message Log
  • Message log for super admins
  • Filter by chapter, type, or status
  • View full message content
v3.6.0
Member Badges
  • Badge system with configurable thresholds
  • First Ride, Milestones, Reliable, Volunteer badges
  • WhatsApp announcements when earned
v3.5.0
Mobile Admin
  • Responsive admin tables
  • Mobile-friendly sidebar
  • Touch-optimised controls
v3.4.0
Walk-up Attendance
  • Add riders at event who didn't pre-sign up
  • Rider profile stats (attendance rate, no-shows)
  • Glove-friendly admin interface
v3.3.0
Photo Gallery
  • Upload ride photos (R2 storage)
  • Admin moderation before going public
  • Lightbox viewer with keyboard nav
v3.2.0
Weather Forecasts
  • Weather on ride detail page
  • Forecasts for both start points
  • Up to 16 days ahead
v3.1.0
Shop Search
  • Product search and category filters
  • Real-time client-side filtering
v3.0.0
Merch Shop
  • Product catalogue with images
  • Order windows and checkout
  • Order tracking and WhatsApp notifications
v2.1.0
Guest Riders & Events
  • Guest rider checkbox on signups
  • Multi-day events with calendar view
v2.0.0
Chapter Officers
  • Flexible officer roles per chapter
  • Visibility control for public display
v1.8.0
Attendance Register
  • Mobile-friendly attendance page
  • Signup confirmation banner
  • Double-submit prevention
v1.7.0
Chapter Admin Roles
  • Super admin and chapter admin roles
  • Chapter-specific permissions
v1.6.0
Member Directory
  • Member list with search and filter
  • Ride ideas management
  • Opt-out system for notifications
v1.5.0
Email Integration
  • Gmail API and SendGrid support
  • Admin creation via WhatsApp
v1.4.0
WhatsApp Notifications
  • Signup confirmations via WhatsApp
  • Cancellation notifications
  • Admin notifications
v1.3.0
Rider Profiles
  • Persistent rider profiles
  • Auto-populate signup forms
  • Rider leaderboard
v1.2.0
PDF Generation
  • Chapter overview PDFs
  • Individual ride PDFs
  • Printable signup lists
v1.1.0
Multi-Chapter Support
  • Durham and Northumbria chapters
  • Chapter-specific rides
v1.0.0
Initial Release
  • Ride management
  • Public signup forms
  • Admin authentication