ClubOps Global – Full Changelog

============================================================
VERSION: 1.8.8
MODULE: GLOBAL7 RELEASE PACKAGE (1)
FILE: clubops-global-v1.8.8-global7-release-package (1).zip
============================================================

ClubOps Global Changelog
Version: 1.8.8-global.7
Release Type: Major Update

Why this is a major update
ClubOps Global now includes Facility Modes / Vertical Pack functionality. This expands the product from a court/club-focused operations system into a broader WordPress facility operations platform for courts, golf simulator facilities, gyms, fitness studios, hybrid facilities, and custom facility workflows.

Added
- Facility Type / Vertical Mode setting.
- Setup & Tools > Facility Mode / Vertical Pack panel.
- Gym / Fitness Facility Mode.
- Gym-specific booking copy, waiver copy, email opt-in copy, PWA naming, and member code defaults.
- Starter gym resources: Main Training Floor, Studio Room 1, Studio Room 2, Turf Lane 1, Private Training Room.
- Starter gym plans: Basic Gym Membership, Unlimited Classes Membership, 10-Class Pack, Personal Training 5-Pack, Drop-In Class Pass.
- Starter class/program examples: HIIT Conditioning, Strength Foundations, Yoga Mobility, Open Gym Drop-In, Small Group Training, Youth Athletic Performance.
- New program types: Class / Group Fitness, Open Gym, Personal Training, Youth Training.
- New shortcode aliases: [hv_clubops_classes], [hv_clubops_gym_classes], [hv_clubops_gym_checkin].
- Commercial LICENSE.txt file included in the ZIP.

Changed
- Product positioning updated from club/court software to a broader WordPress facility operations platform.
- Product page and product description now identify v1.8.8 Global.7 as a major update.
- Feature language now includes gyms, training centers, hybrid facilities, class workflows, and vertical facility functionality.
- Setup/import/report language now includes Facility Modes.

Notes
- Existing data is preserved.
- Facility starter packs create/verify matching starter items only when those names do not already exist.
- The one-time license model remains unchanged.
- Major feature upgrades, custom modules, migrations, setup work, and extended support are separate unless included in the purchased package.
- Practical security and compatibility maintenance for the purchased branch should not be treated like a monthly ransom.



============================================================
VERSION: 1.8.8
MODULE: GLOBAL7 RELEASE PACKAGE
FILE: clubops-global-v1.8.8-global7-release-package.zip
============================================================

ClubOps Global Changelog
Version: 1.8.8-global.7
Release Type: Major Update

Why this is a major update
ClubOps Global now includes Facility Modes / Vertical Pack functionality. This expands the product from a court/club-focused operations system into a broader WordPress facility operations platform for courts, golf simulator facilities, gyms, fitness studios, hybrid facilities, and custom facility workflows.

Added
- Facility Type / Vertical Mode setting.
- Setup & Tools > Facility Mode / Vertical Pack panel.
- Gym / Fitness Facility Mode.
- Gym-specific booking copy, waiver copy, email opt-in copy, PWA naming, and member code defaults.
- Starter gym resources: Main Training Floor, Studio Room 1, Studio Room 2, Turf Lane 1, Private Training Room.
- Starter gym plans: Basic Gym Membership, Unlimited Classes Membership, 10-Class Pack, Personal Training 5-Pack, Drop-In Class Pass.
- Starter class/program examples: HIIT Conditioning, Strength Foundations, Yoga Mobility, Open Gym Drop-In, Small Group Training, Youth Athletic Performance.
- New program types: Class / Group Fitness, Open Gym, Personal Training, Youth Training.
- New shortcode aliases: [hv_clubops_classes], [hv_clubops_gym_classes], [hv_clubops_gym_checkin].
- Commercial LICENSE.txt file included in the ZIP.

Changed
- Product positioning updated from club/court software to a broader WordPress facility operations platform.
- Product page and product description now identify v1.8.8 Global.7 as a major update.
- Feature language now includes gyms, training centers, hybrid facilities, class workflows, and vertical facility functionality.
- Setup/import/report language now includes Facility Modes.

Notes
- Existing data is preserved.
- Facility starter packs create/verify matching starter items only when those names do not already exist.
- The one-time license model remains unchanged.
- Major feature upgrades, custom modules, migrations, setup work, and extended support are separate unless included in the purchased package.
- Practical security and compatibility maintenance for the purchased branch should not be treated like a monthly ransom.



============================================================
VERSION: 1.8.8
MODULE: GLOBAL7.1 READY RELEASE
FILE: clubops-global-v1.8.8-global7.1-ready-release.zip
============================================================

ClubOps Global Changelog
Version: 1.8.8-global.7.1
Release Type: License UI Hotfix / Full Plugin Build

Changed
- Removed the customer-facing License Server URL display from the ClubOps license activation screen.
- Replaced it with clean user-facing copy: license verification is handled automatically by Web Vine Marketing.
- Stopped saving the license API endpoint in customer-facing plugin options.
- Kept the license endpoint internal to the plugin code.
- Bumped plugin version to 1.8.8-global.7.1 for traceability.

Preserved
- All v1.8.8-global.7 functionality.
- Facility Modes / Vertical Packs.
- Gym / Fitness Facility Mode.
- Starter resources, plans, and class templates.
- Booking, memberships, waivers, check-ins, live board, email opt-in, PWA, reports, WooCommerce support, and license gating.
- Full plugin assets and included files.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.0 OFFICIAL PUBLIC RELEASE
FILE: clubops-global-v1.8.9-global.0-official-public-release.zip
============================================================

ClubOps Global v1.8.9-global.0
Official Public Release

Added
- Device-aware PWA install screen logic.
- Android / Chrome / Edge install prompt support when the browser exposes the install event.
- iPhone / iPad installation instructions for Safari / Share menu / Add to Home Screen.
- Desktop install guidance for Chrome / Edge app installation.
- Configurable PWA splash screen settings.
- Splash logo URL setting.
- Splash background color setting.
- Splash title setting.
- Splash subtitle setting.
- Splash duration setting.
- Improved PWA manifest output and app branding controls.
- Standalone app-mode handling for installed PWA sessions.

Preserved
- Global.7 facility mode / vertical pack work.
- Gym / Fitness facility mode.
- Court, golf, gym, hybrid, and custom facility options.
- Existing booking, membership, program, event, league, tournament, standings, scoreboard, check-in, waiver, portal, and owner recovery functionality.
- Global.7.1 customer-facing license screen cleanup.

Notes
- Upload only the installable plugin ZIP inside this package.
- Do not upload this full release package through WordPress as a plugin.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.0 READY RELEASE
FILE: clubops-global-v1.8.9-global.0-ready-release.zip
============================================================

ClubOps Global Changelog
Version: 1.8.9-global.0
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.2 OFFICIAL PUBLIC RELEASE
FILE: clubops-global-v1.8.9-global.2-official-public-release.zip
============================================================

= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.3 OFFICIAL PUBLIC RELEASE
FILE: clubops-global-v1.8.9-global.3-official-public-release.zip
============================================================

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.8
MODULE: GLOBAL7.1 PLUGIN
FILE: hv-clubops-global-v1.8.8-global7.1-plugin.zip
============================================================

ClubOps Global Changelog
Version: 1.8.8-global.7.1
Release Type: License UI Hotfix / Full Plugin Build

Changed
- Removed the customer-facing License Server URL display from the ClubOps license activation screen.
- Replaced it with clean user-facing copy: license verification is handled automatically by Web Vine Marketing.
- Stopped saving the license API endpoint in customer-facing plugin options.
- Kept the license endpoint internal to the plugin code.
- Bumped plugin version to 1.8.8-global.7.1 for traceability.

Preserved
- All v1.8.8-global.7 functionality.
- Facility Modes / Vertical Packs.
- Gym / Fitness Facility Mode.
- Starter resources, plans, and class templates.
- Booking, memberships, waivers, check-ins, live board, email opt-in, PWA, reports, WooCommerce support, and license gating.
- Full plugin assets and included files.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.3
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.3.zip
============================================================

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.4 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.4-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.5 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.5-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.5 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.6
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.6.zip
============================================================

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.7 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.7-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.7 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.1 HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.1-HOTFIX.zip
============================================================

== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.10 INSTALLABLE PUBLIC RELEASE (1)
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.10-INSTALLABLE-PUBLIC-RELEASE (1).zip
============================================================

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.10 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.10-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.11 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.11-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.12 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.12-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.13 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.13-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.14 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.14-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.15 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.15-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.16 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.16-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.17 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.17-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.17.1 ADMIN MENU CLEANUP
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.17.1-ADMIN-MENU-CLEANUP.zip
============================================================

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.18 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.18-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.19 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.19-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.2 HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.2-HOTFIX.zip
============================================================

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.20 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.20-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.20.1 HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.20.1-HOTFIX.zip
============================================================

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.21 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.21-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.22 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.22-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.23 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.23-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.24 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.24-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.25
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.25.zip
============================================================

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.26 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.26-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27.1 COMMUNICATIONS HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27.1-COMMUNICATIONS-HOTFIX.zip
============================================================

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27.2 COMMUNICATIONS VISUAL HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27.2-COMMUNICATIONS-VISUAL-HOTFIX.zip
============================================================

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27.3 COMMUNICATIONS LAYOUT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27.3-COMMUNICATIONS-LAYOUT-HOTFIX.zip
============================================================

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27.4 MAIL DIAGNOSTICS HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27.4-MAIL-DIAGNOSTICS-HOTFIX.zip
============================================================

= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.27.5 MAIL TRANSPORT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.27.5-MAIL-TRANSPORT-HOTFIX.zip
============================================================

= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.28 COMMAND CENTER RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.28-COMMAND-CENTER-RELEASE.zip
============================================================

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.29 MEMBER PORTAL DASHBOARD RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.29-MEMBER-PORTAL-DASHBOARD-RELEASE.zip
============================================================

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.3 HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.3-HOTFIX.zip
============================================================

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.30 BRANDING ALIGNMENT RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.30-BRANDING-ALIGNMENT-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.31 FRONT DESK STAFF HUB RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.31-FRONT-DESK-STAFF-HUB-RELEASE.zip
============================================================

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.32 FRONT DESK HANDOFF NOTES RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.32-FRONT-DESK-HANDOFF-NOTES-RELEASE.zip
============================================================

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.33 FRONT DESK DAILY CHECKLIST RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.33-FRONT-DESK-DAILY-CHECKLIST-RELEASE.zip
============================================================

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.33.1 STAFF HUB FRONTEND LAYOUT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.33.1-STAFF-HUB-FRONTEND-LAYOUT-HOTFIX.zip
============================================================

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.34 STAFF CHECKLIST MANAGER RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.34-STAFF-CHECKLIST-MANAGER-RELEASE.zip
============================================================

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.34.1 PROGRAMS VIEW TOGGLE HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.34.1-PROGRAMS-VIEW-TOGGLE-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.35 PROGRAMS PROGRESSIVE LOADING RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.35-PROGRAMS-PROGRESSIVE-LOADING-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.36 PROGRAMS DATE QUICK FILTERS RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.36-PROGRAMS-DATE-QUICK-FILTERS-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.37 PROGRAMS TIME QUICK FILTERS RELEASE (1)
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.37-PROGRAMS-TIME-QUICK-FILTERS-RELEASE (1).zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.37 PROGRAMS TIME QUICK FILTERS RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.37-PROGRAMS-TIME-QUICK-FILTERS-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.38 PROGRAMS FILTER UX BUNDLE RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.38-PROGRAMS-FILTER-UX-BUNDLE-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.4 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.4-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.40 PROGRAMS SHARE CALENDAR BUNDLE RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.40-PROGRAMS-SHARE-CALENDAR-BUNDLE-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.41 FRONTEND CALENDAR RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.41-FRONTEND-CALENDAR-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.41.1 CALENDAR VISUAL HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.41.1-CALENDAR-VISUAL-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.41.2 CALENDAR OVERFLOW COMPACT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.41.2-CALENDAR-OVERFLOW-COMPACT-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.41.3 CALENDAR DAY MODAL HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.41.3-CALENDAR-DAY-MODAL-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.41.4 CALENDAR DAY CLICK HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.41.4-CALENDAR-DAY-CLICK-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.42 PUBLIC FRONTEND HUB RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.42-PUBLIC-FRONTEND-HUB-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.43 PUBLIC SCHEDULE WIDGETS RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.43-PUBLIC-SCHEDULE-WIDGETS-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.44 PUBLIC PAGE GENERATOR RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.44-PUBLIC-PAGE-GENERATOR-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.44.1 PUBLIC PAGE GENERATOR FIT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.44.1-PUBLIC-PAGE-GENERATOR-FIT-HOTFIX.zip
============================================================

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.5 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.5-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.6 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.6-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.6.1 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.6.1-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.6.1 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.6.2 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.6.2-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

= 1.8.9-global.8.6.2 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.6.2 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.7 INSTALLABLE PUBLIC RELEASE (1)
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.7-INSTALLABLE-PUBLIC-RELEASE (1).zip
============================================================

HV ClubOps Global v1.8.9-global.8.7
- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.7 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.7 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.7 INSTALLABLE PUBLIC RELEASE (2)
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.7-INSTALLABLE-PUBLIC-RELEASE (2).zip
============================================================

HV ClubOps Global v1.8.9-global.8.7
- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.7 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.7 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.7 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.7-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

HV ClubOps Global v1.8.9-global.8.7
- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.7 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.7 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.8 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.8-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.8.1 CSS HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.8.1-CSS-HOTFIX.zip
============================================================

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.8.2 PRINT HOTFIX
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.8.2-PRINT-HOTFIX.zip
============================================================

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8.9 INSTALLABLE PUBLIC RELEASE
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.9-INSTALLABLE-PUBLIC-RELEASE.zip
============================================================

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.8
FILE: HV-CLUBOPS-GLOBAL-v1.8.9-global.8.zip
============================================================

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: FINAL
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-FINAL.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: OFFICIAL RELEASE
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-OFFICIAL-RELEASE.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC1 LAUNCH CANDIDATE
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC1-LAUNCH-CANDIDATE.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC10 BOOKING PAYMENT FLOW HOLD UX
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC10-BOOKING-PAYMENT-FLOW-HOLD-UX.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC12 BOOKING CHECKOUT HANDOFF FIX
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC12-BOOKING-CHECKOUT-HANDOFF-FIX.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC13 PAY NOW ORDER RECOVERY FIX
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC13-PAY-NOW-ORDER-RECOVERY-FIX.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC14 SPLIT PAYER IDENTITY FIX
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC14-SPLIT-PAYER-IDENTITY-FIX.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC15 SPLIT AJAX PAYER EMAIL FIX
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC15-SPLIT-AJAX-PAYER-EMAIL-FIX.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC16 SPLIT FLOW EMAIL CLEANUP
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC16-SPLIT-FLOW-EMAIL-CLEANUP.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC17 SPLIT PAYMENT EMAIL CTA
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC17-SPLIT-PAYMENT-EMAIL-CTA.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC18 SPLIT EMAIL TEMPLATE SETTINGS
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC18-SPLIT-EMAIL-TEMPLATE-SETTINGS.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC19 SPLIT ADMIN RECOVERY STATUS SYNC
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC19-SPLIT-ADMIN-RECOVERY-STATUS-SYNC.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC2 PREFLIGHT LAUNCH CANDIDATE
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC2-PREFLIGHT-LAUNCH-CANDIDATE.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC21 CURRENCY LOCALIZATION FINALIZATION
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC21-CURRENCY-LOCALIZATION-FINALIZATION.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC3 PREFLIGHT POLISH LAUNCH CANDIDATE
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC3-PREFLIGHT-POLISH-LAUNCH-CANDIDATE.zip
============================================================

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC4 COMPLETION AUDIT BETA
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC4-COMPLETION-AUDIT-BETA.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC5 OPERATIONS AUTOMATION BATCH
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC5-OPERATIONS-AUTOMATION-BATCH.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC6 FAMILY GROUP ACCOUNTS BATCH
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC6-FAMILY-GROUP-ACCOUNTS-BATCH.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC7 ADMIN UI POLISH BATCH
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC7-ADMIN-UI-POLISH-BATCH.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC8 SPLIT BILLING BATCH
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC8-SPLIT-BILLING-BATCH.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.0
MODULE: RC9 BILLING SUBSCRIPTION READINESS
FILE: HV-CLUBOPS-GLOBAL-v2.0.0-RC9-BILLING-SUBSCRIPTION-READINESS.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.



============================================================
VERSION: 2.0.1
MODULE: GIFT CARDS MENU CLEANUP
FILE: HV-CLUBOPS-GLOBAL-v2.0.1-GIFT-CARDS-MENU-CLEANUP.zip
============================================================

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.



============================================================
VERSION: 2.0.2
MODULE: GIFT CARDS UI POLISH
FILE: HV-CLUBOPS-GLOBAL-v2.0.2-GIFT-CARDS-UI-POLISH.zip
============================================================

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.



============================================================
VERSION: 2.0.3
MODULE: GIFT CARDS LAYOUT FIX
FILE: HV-CLUBOPS-GLOBAL-v2.0.3-GIFT-CARDS-LAYOUT-FIX.zip
============================================================

2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.



============================================================
VERSION: 2.1.0
MODULE: COURT OPS
FILE: HV-CLUBOPS-GLOBAL-v2.1.0-COURT-OPS.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.



============================================================
VERSION: 2.1.1
MODULE: 
FILE: HV-CLUBOPS-GLOBAL-v2.1.1-.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.


## 2.1.1 - Court Ops / Gift Cards Dashboard Integration
- Added Court Ops and Gift Cards to dashboard launcher tile definitions and default visible tiles.
- Added dashboard command-center metrics for paddle queue, court sessions, permanent reservations, gift card activity, and open gift card balance.
- Added action-required rows for Court Queue No-Shows and Gift Card Activity Today.
- Added Quick Actions for Court Ops and Gift Card issue/redeem workflows.
- Added Launch Readiness rows for Court Ops resource/session setup and Gift Cards table/status.
- Added dashboard stat cards for Court Sessions, Paddle Queue, Permanent Reservations, Active Gift Cards, and Gift Card Balance.
- Added dashboard shortcode references for gift card and court operations shortcodes.



============================================================
VERSION: 2.2.0
MODULE: SUPPORT TICKETS UPGRADER
FILE: HV-CLUBOPS-GLOBAL-v2.2.0-SUPPORT-TICKETS-UPGRADER.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.


## 2.1.1 - Court Ops / Gift Cards Dashboard Integration
- Added Court Ops and Gift Cards to dashboard launcher tile definitions and default visible tiles.
- Added dashboard command-center metrics for paddle queue, court sessions, permanent reservations, gift card activity, and open gift card balance.
- Added action-required rows for Court Queue No-Shows and Gift Card Activity Today.
- Added Quick Actions for Court Ops and Gift Card issue/redeem workflows.
- Added Launch Readiness rows for Court Ops resource/session setup and Gift Cards table/status.
- Added dashboard stat cards for Court Sessions, Paddle Queue, Permanent Reservations, Active Gift Cards, and Gift Card Balance.
- Added dashboard shortcode references for gift card and court operations shortcodes.


## 2.2.0 - Support Ticket System and Central Support Hub
- Added client-side ClubOps Support Tickets module.
- Added local support ticket tables and message history table.
- Added Support Tickets admin page for facility installs.
- Added ticket creation, local storage, status changes, assignment, replies, private notes, and retry hub sync.
- Added default support email routing to growth@webvinemarketing.com.
- Added optional remote push to central ClubOps Support Hub endpoint with site key and HMAC shared-secret signature.
- Added REST callbacks so a central support hub can push replies and status updates back to the facility install.
- Added [hv_clubops_support_ticket] shortcode.
- Added Support Tickets to dashboard tiles, stats, quick actions, action required, launch readiness, and shortcode references.
- Added separate ClubOps Support Hub parent plugin for Web Vine Studio site.
- Parent hub receives client tickets, stores sites/tickets/messages, assigns tickets, answers tickets, closes tickets, emails replies, and pushes replies/status back to client installs when endpoint and secret are configured.



============================================================
VERSION: 2.2.1
MODULE: GENERAL UPDATE
FILE: HV-CLUBOPS-GLOBAL-v2.2.1.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.


## 2.1.1 - Court Ops / Gift Cards Dashboard Integration
- Added Court Ops and Gift Cards to dashboard launcher tile definitions and default visible tiles.
- Added dashboard command-center metrics for paddle queue, court sessions, permanent reservations, gift card activity, and open gift card balance.
- Added action-required rows for Court Queue No-Shows and Gift Card Activity Today.
- Added Quick Actions for Court Ops and Gift Card issue/redeem workflows.
- Added Launch Readiness rows for Court Ops resource/session setup and Gift Cards table/status.
- Added dashboard stat cards for Court Sessions, Paddle Queue, Permanent Reservations, Active Gift Cards, and Gift Card Balance.
- Added dashboard shortcode references for gift card and court operations shortcodes.


## 2.2.0 - Support Ticket System and Central Support Hub
- Added client-side ClubOps Support Tickets module.
- Added local support ticket tables and message history table.
- Added Support Tickets admin page for facility installs.
- Added ticket creation, local storage, status changes, assignment, replies, private notes, and retry hub sync.
- Added default support email routing to growth@webvinemarketing.com.
- Added optional remote push to central ClubOps Support Hub endpoint with site key and HMAC shared-secret signature.
- Added REST callbacks so a central support hub can push replies and status updates back to the facility install.
- Added [hv_clubops_support_ticket] shortcode.
- Added Support Tickets to dashboard tiles, stats, quick actions, action required, launch readiness, and shortcode references.
- Added separate ClubOps Support Hub parent plugin for Web Vine Studio site.
- Parent hub receives client tickets, stores sites/tickets/messages, assigns tickets, answers tickets, closes tickets, emails replies, and pushes replies/status back to client installs when endpoint and secret are configured.


## 2.2.1 - Support Tickets Access Fix
- Fixed Support Tickets admin menu registration.
- Added dedicated hvco_manage_support_tickets capability.
- Added capability assignment for administrator, ClubOps admin, and ClubOps manager roles.
- Added manage_options fallback so a real site owner/admin cannot be blocked from the Support Tickets page.
- Added runtime admin_init capability refresh for already-installed sites.
- Updated dashboard tile capability handling so admins can access Support Tickets from tiles and menu.



============================================================
VERSION: 2.2.2
MODULE: SUPPORT DESK UI
FILE: HV-CLUBOPS-GLOBAL-v2.2.2-SUPPORT-DESK-UI.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.


## 2.1.1 - Court Ops / Gift Cards Dashboard Integration
- Added Court Ops and Gift Cards to dashboard launcher tile definitions and default visible tiles.
- Added dashboard command-center metrics for paddle queue, court sessions, permanent reservations, gift card activity, and open gift card balance.
- Added action-required rows for Court Queue No-Shows and Gift Card Activity Today.
- Added Quick Actions for Court Ops and Gift Card issue/redeem workflows.
- Added Launch Readiness rows for Court Ops resource/session setup and Gift Cards table/status.
- Added dashboard stat cards for Court Sessions, Paddle Queue, Permanent Reservations, Active Gift Cards, and Gift Card Balance.
- Added dashboard shortcode references for gift card and court operations shortcodes.


## 2.2.0 - Support Ticket System and Central Support Hub
- Added client-side ClubOps Support Tickets module.
- Added local support ticket tables and message history table.
- Added Support Tickets admin page for facility installs.
- Added ticket creation, local storage, status changes, assignment, replies, private notes, and retry hub sync.
- Added default support email routing to growth@webvinemarketing.com.
- Added optional remote push to central ClubOps Support Hub endpoint with site key and HMAC shared-secret signature.
- Added REST callbacks so a central support hub can push replies and status updates back to the facility install.
- Added [hv_clubops_support_ticket] shortcode.
- Added Support Tickets to dashboard tiles, stats, quick actions, action required, launch readiness, and shortcode references.
- Added separate ClubOps Support Hub parent plugin for Web Vine Studio site.
- Parent hub receives client tickets, stores sites/tickets/messages, assigns tickets, answers tickets, closes tickets, emails replies, and pushes replies/status back to client installs when endpoint and secret are configured.


## 2.2.1 - Support Tickets Access Fix
- Fixed Support Tickets admin menu registration.
- Added dedicated hvco_manage_support_tickets capability.
- Added capability assignment for administrator, ClubOps admin, and ClubOps manager roles.
- Added manage_options fallback so a real site owner/admin cannot be blocked from the Support Tickets page.
- Added runtime admin_init capability refresh for already-installed sites.
- Updated dashboard tile capability handling so admins can access Support Tickets from tiles and menu.


## 2.2.2 - Support Desk UI + Client-Side Auto Routing
- Reworked ClubOps > Support Tickets into a themed support desk instead of a raw routing settings screen.
- Removed endpoint/site key/shared secret fields from the normal facility workflow.
- Support now works by default through local ticket storage plus email routing to growth@webvinemarketing.com.
- Advanced hub routing is now tucked behind an internal advanced panel for Web Vine support use only.
- Added install reference/status display so support tickets can be matched to a facility install without asking the client to configure routing.
- Added premium Support Desk layout, hero, stats, recent ticket cards, ticket history styling, and support status pills.
- Preserved central hub routing for installs where Web Vine chooses to configure it.



============================================================
VERSION: 2.2.3
MODULE: GENERAL UPDATE
FILE: HV-CLUBOPS-GLOBAL-v2.2.3.zip
============================================================

= 2.1.0 =
* Added Court Ops engine for challenge courts, paddle queue management, open play rotation, skill-level sessions, DUPR-ready workflows, permanent reservations, resource/simulator rules, guest limits, and queue no-show handling.
* Added shortcodes: [hv_clubops_paddle_queue], [hv_clubops_open_play_rotation], [hv_clubops_challenge_courts], and [hv_clubops_court_ops].
* Added Court Ops admin page with active session stats, queue actions, permanent reservation generation, and resource rule management.
2.0.3 - Gift Cards Redeem/Layout Containment Fix
- Fixed the Gift Cards admin Redeem panel so the Staff Note field no longer overlaps the Public Shortcodes panel.
- Added stronger input, textarea, and panel containment for the Gift Cards admin page.
- Improved shortcode panel spacing and responsive behavior.

2.0.2 - Gift Cards Admin UI Polish
- Improved the Gift Cards admin page layout, stats cards, form spacing, search panel, shortcode panel, and table styling.
- Fixed the Gift Cards page wrapper so existing premium admin styles apply correctly.

ClubOps Global by Web Vine Studio 2.0.0
- Official 2.0.0 release package.
- Promotes the RC21 Currency + Localization Finalization build to official 2.0.0.
- Includes the full 2.0 feature set: public page generator, Basic Theme page flow, launch preflight, downloadable launch report, final QA checklist, split billing / multi-payer checkout, split payer emails, editable split email templates, split admin recovery, Upcoming Payments, Pay Now direct checkout handoff, Pay at Counter holds, pay-now order recovery, billing/subscription readiness, family/group accounts, billing profile linkage, automation/webhook foundations, retention scan foundation, currency display controls, WordPress textdomain loading, starter POT file, and frontend label overrides.
- No database schema changes from RC21.
- No new booking/payment/split/membership logic changes from RC21.
- WooCommerce remains the checkout/payment source of truth.
- Currency override remains display-only unless the facility's WooCommerce/payment gateway setup handles true multi-currency checkout.

ClubOps Global by Web Vine Studio 2.0.0-rc21
- Currency + Localization Finalization.
- Added lightweight currency display settings without exchange-rate APIs or external calls.
- Added WooCommerce automatic currency formatting mode and optional ClubOps display formatting override mode.
- Added base currency code, optional multi-currency display list, symbol override, symbol position, decimals, decimal separator, and thousands separator settings.
- WooCommerce remains the payment source of truth. ClubOps currency override controls display formatting only.
- Added normal WordPress plugin textdomain loading and a languages/hv-clubops.pot starter translation template.
- Added lightweight frontend label overrides in Settings > Currency & Language for facilities that need custom wording or language-specific public labels without a heavy multilingual plugin.
- Frontend booking/split payment JavaScript now receives currency formatting and label settings from WordPress.
- Booking, split-payment, confirmation, and common public labels can now be adjusted from settings.
- Added Currency & Localization checks to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc20
- Final QA / Release Polish Candidate.
- Added admin-only 2.0 Official Final QA Checklist in Setup & Tools.
- Added final manual ship gate covering normal pay-now, pay-at-counter, split payment, upcoming payments, member/family accounts, programs/events/calendar, email templates, automations/webhooks, generated pages/navigation, and staff recovery.
- Added Final QA checks to Release Preflight / Smoke Test.
- Added Final QA section to Download Launch Report.
- Added support/package handoff reminders for included support windows and optional monthly support.
- Kept RC/final-QA language in admin/release documentation rather than customer-facing public page copy.
- No database schema changes.
- No booking/payment/split/membership logic changes from RC19.

ClubOps Global by Web Vine Studio 2.0.0-rc19
- Split Payment Admin Recovery + Status Sync Audit.
- Added split payment recovery panel under split-payment reservations in the Reservations admin table.
- Staff can now view payer name, payer email, share amount, split status, Woo order, payment link, and last split email log.
- Added copyable payment link fields and Open Pay Link buttons for unpaid split shares.
- Added admin actions to create missing split Woo orders, resend payer emails, refresh split status, manually mark a share paid, or mark a share failed.
- Added secure admin split-payment action handler with booking/payment capability checks and nonces.
- Added split status refresh from Woo orders and reservation roll-up sync.
- Fixed split response email_sent timing so AJAX response reflects whether payer emails were actually sent.
- Patched admin-created Woo payment emails to use direct ClubOps/Woo order-pay URLs.
- Patched Woo direct order-pay helper fallback to avoid recursion if Woo endpoint helpers are unavailable.
- Added split admin recovery and split status refresh checks to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc18
- Split Email Template Settings Batch.
- Exposed split-payment owner and payer wording inside Settings > Email Templates.
- Added editable split owner subject, heading, intro, and footer note.
- Added editable split payer subject, heading, intro, after-payment note, and fallback-link note.
- Added editable split account CTA text and split membership CTA text in the email template area.
- Added editable button labels for Pay My Share, Upcoming Payments, Claim/Create Account, Membership Options, and Owner Portal.
- Updated split owner and split payer HTML emails to pull wording/buttons from backend settings with current RC17 copy as defaults.
- Added public-link/email tokens for portal, account claim, membership, and upcoming payments.
- Added split email template readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc17
- Split Payment Email CTA / Account Conversion Batch.
- Added HVCO_Public_Links helper for generated page URLs used in customer emails.
- Split payer emails are now HTML emails with a clear Pay My Share button.
- Split payer emails include Upcoming Payments, Claim/Create Account, and View Membership Options CTAs when enabled.
- Booking-owner split emails are now HTML emails with payer link table, portal CTA, claim/create account CTA, and membership CTA.
- Added fallback raw checkout URL text below the email button for deliverability/client compatibility.
- Added settings defaults for split billing account and membership CTA copy.
- Added split CTA email readiness check to Release Preflight / Smoke Test.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc16
- Split Flow Hardening + Email Cleanup.
- Split booking form now uses an owned split AJAX submit path that prevents native page refresh and does not rely on the normal submit handler.
- Booking form now has native-submit safety attributes so browser fallback cannot silently reload the page.
- Split booking now forces full reservation/base total when member/package logic would otherwise reduce the booking to zero before payer shares are generated.
- Package credits are not consumed when split billing is selected.
- Booking owner now receives a split-payment-specific customer email with payer links and clear held/awaiting-split-payment language.
- Split payer emails now clearly explain the payer's share and decode currency entities.
- Admin email default copy no longer includes a raw admin URL.
- Admin notification rendering strips raw Admin: URL lines for safer email output.
- Money formatting now decodes HTML entities so emails/calendar labels show $20.00 instead of $20.00.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc15
- Split AJAX / Payer Email Flow Fix.
- Patched split billing frontend so payer rows sync to a hidden JSON payload as well as the REST payload.
- Added split-payer validation before submit so split cannot silently refresh with empty payer data.
- Added split billing native-submit hardener to prevent silent page refresh when split is checked.
- Split booking response now includes payer count and email-sent count.
- Split payer links shown onscreen now clearly state that links are usable even if email delivery is unavailable or delayed.
- Added explicit name/email attributes to split payer fields for better browser behavior and future fallback support.
- Split billing Add/Remove controls are forced to button type to prevent accidental form submission.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc14
- Split Payer Identity / Non-Member Flow Fix.
- Split billing now resolves each payer by email against existing WordPress/Woo users and ClubOps members.
- Unknown split payer emails now create ClubOps lead/member records instead of remaining disconnected email-only payments.
- Split payer Woo orders attach to the matched WP/Woo account when one exists.
- Split payment records store resolved member_id/wp_user_id where available.
- Split payer emails include the payment link and can include an account-claim link for unclaimed non-member leads.
- Account claim auto-invite is triggered for unclaimed split payer leads/members when enabled.
- Upcoming Payments now works for regular WordPress/Woo accounts by email even if no ClubOps member profile is linked yet.
- Upcoming Payments split payment lookup now checks payer email and wp_user_id.
- Added split payer identity checks/details to Release Preflight / Smoke Test and Launch Report.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc13
- Pay-Now Order Creation / Recovery Fix.
- Pay-now booking choice now forces Woo order creation even when the global payment mode was request/optional.
- Pay-at-counter remains a non-Woo hold path and does not trigger online checkout.
- Rebuilt HVCO_Woo::order_payment_url() to always prefer a direct Woo order-pay endpoint instead of cart/account URLs.
- Reservation REST checkout_url now uses the direct order-pay helper.
- Added woo_order_created response flag for pay-now diagnosis.
- Upcoming Payments can now open or create a missing Woo payment order for an unpaid reservation hold.
- Added secure hvco_pay_reservation_hold account action with ownership/family permission checks.
- Existing unpaid holds without Woo orders can recover through Upcoming Payments.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc12
- Booking Checkout Handoff Fix.
- Patched pay-now booking flow to return explicit redirect_to_checkout and checkout_handoff_label response fields.
- Frontend now shows a Signed Up confirmation state and then redirects pay-now bookings directly to the Woo order-pay checkout URL.
- Added fallback Pay Now / Continue to Secure Checkout button if redirect is blocked.
- Added robust HVCO_Woo::order_payment_url() helper to avoid cart/empty-cart style checkout confusion and prefer direct order-pay URLs.
- Split payer checkout links and Upcoming Payments checkout links now use the same robust order-pay URL helper.
- Pay-at-counter still does not redirect to Woo; it remains a held booking surfaced through Upcoming Payments/account with deadline language.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc11
- Account Upcoming Payments / Pay Now Batch.
- Added HVCO_Upcoming_Payments core class.
- Added [hv_clubops_upcoming_payments] shortcode.
- Added Upcoming Payments section to the logged-in Member Portal dashboard.
- Upcoming Payments shows unpaid booking holds with Woo Pay Now checkout links when available.
- Upcoming Payments shows pay-at-counter holds with clear hold/deadline language.
- Upcoming Payments shows split payer links for the logged-in payer email.
- Upcoming Payments shows open membership invoices with Pay Invoice links.
- Added Upcoming Payments tile/reference support for generated/account pages where available.
- Added Upcoming Payments checks to Release Preflight / Smoke Test and Launch Report.
- Patched membership invoice payment permission to support linked household/family profile invoices.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc10
- Booking Payment Flow / Hold UX Batch.
- Added HVCO_Booking_Payment_Flow core class.
- Added Setup & Tools panel for booking payment choice, pay-at-counter hold hours, and customer-facing hold notice.
- Added frontend payment option selector for pay-now online versus pay-at-counter when enabled.
- Added counter-pay reservation flow with configurable hold deadline and payment status pay_at_counter.
- Patched paid booking REST response to include payment choice, hold deadline, payment due display, and hold notice.
- Replaced weak post-submit message with a clear customer confirmation panel showing next action, total, payment status, hold deadline, checkout button, counter-pay notice, or split payer links.
- Added booking payment flow checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal pay-now checkout remains unchanged when pay-at-counter is not selected.
- Split billing remains separate and continues to show payer checkout links.
- No database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc9
- Billing Engine / Subscription Readiness Batch.
- Added HVCO_Billing_Engine core boundary class.
- Added Setup & Tools panel explaining the separation between ClubOps membership lifecycle ownership and WooCommerce payment collection.
- Added subscription billing modes: pay-now invoices, addon-ready native subscription bridge, and future native tokenized autobill.
- Added safe live-autobill switch that remains off unless a gateway/addon bridge is present.
- Added filters/actions for a future free monthly subscription addon or native tokenized payment bridge.
- Added billing/subscription readiness checks to Release Preflight / Smoke Test and Download Launch Report.
- Added membership invoice/order hooks where available for future subscription bridge integration.
- No database schema changes.
- No automatic recurring card charging added in this batch.
- Normal Woo checkout, split billing, and current reminder/pay-now billing remain unchanged.

ClubOps Global by Web Vine Studio 2.0.0-rc8
- Split Billing / Multi-Payer Checkout Batch.
- Added HVCO_Split_Billing core class.
- Added split payment database table for reservation payer records, payer emails, amounts, Woo order IDs, payment status, and audit data.
- Added booking form split-payment controls when split billing is enabled.
- Added frontend JavaScript to collect additional payer names/emails and display individual checkout links.
- Added separate WooCommerce order creation per split payer.
- Patched Woo payment status handling so split-payer orders update split records and only confirm the reservation after all split orders are paid.
- Added optional payer email notifications with checkout links.
- Added Split Billing panel in Setup & Tools.
- Added Split Billing checks to Release Preflight / Smoke Test and Download Launch Report.
- Normal single-payer booking/checkout flow remains unchanged unless split billing is selected.
- Database schema change: adds hvco_split_payments table.

ClubOps Global by Web Vine Studio 2.0.0-rc7
- Admin UI Polish Batch.
- Patched Operations Automations & Webhooks settings layout so labels, fields, checkboxes, textarea, and buttons use the premium ClubOps admin card/form styling instead of raw inline browser controls.
- Patched Setup & Tools automation form spacing, grid behavior, and responsive layout.
- Patched admin table styling and overflow handling so Members and other wide admin tables stay inside their panels instead of breaking the layout.
- Improved widefat table spacing, headers, borders, and horizontal scrolling inside ClubOps panels.
- No booking/payment logic changes.
- No database schema changes.
- No automation logic changes.
- No family/group account logic changes.

ClubOps Global by Web Vine Studio 2.0.0-rc6
- Family / Group Account Completion Batch.
- Added HVCO_Family core class.
- Added parent/guardian, dependent/child, spouse/partner, guest, and primary account role support using existing member hierarchy fields.
- Added member admin Family / Group Account panel for linking parent/guardian profiles and billing profiles.
- Added household/group lookup helpers and current-user allowed profile resolution.
- Added portal profile picker foundation for logged-in household accounts.
- Added Family / Group Accounts panel in Setup & Tools.
- Added family/group checks to Release Preflight / Smoke Test and Launch Report.
- Added frontend/admin styling for family profile selection and admin family panels.
- No database schema changes.
- Split billing remains held for the next payment-specific batch.

ClubOps Global by Web Vine Studio 2.0.0-rc5
- Operations Completion Batch 1.
- Added HVCO_Automations core class.
- Added webhook/API bridge foundation with selected event dispatch, JSON envelope, optional HMAC signature, activity logging, and safe disabled-by-default behavior.
- Added automation event dispatch points for reservations, check-ins, Woo checkout order creation, Woo reservation payment updates, program create/update, and membership/package create/update.
- Added retention automation scan foundation that can create CRM follow-up tasks for inactive members and low package-credit balances while avoiding duplicate open automation tasks.
- Added manual Run Retention Scan action in Setup & Tools.
- Added Operations Automations & Webhooks configuration panel in Setup & Tools.
- Added automation status to the Release Preflight / Smoke Test and downloadable Launch Report.
- Added daily automation cron registration and deactivation cleanup.
- No database schema changes.
- Webhooks and retention automation default to off/safe until explicitly enabled.

ClubOps Global by Web Vine Studio 2.0.0-rc4
- Converted the premature 2.0.0 final package back into the release-candidate beta track.
- Public/global stable branch remains 1.8.9-global.
- Added a visible Release Channel & 2.0+ Roadmap Boundary section in Setup & Tools.
- Launch Report now documents the public stable branch, current beta branch, 2.0 finish line, and 2.0+ roadmap boundary.
- Tracked 2.0+ roadmap items without activating them: split billing / multi-payer checkout, retention automation triggers, webhook/API automation bridge, and family/parent-child account hierarchy.
- No booking/payment logic changes, no import logic changes, no shortcode behavior changes, no page generator logic changes, and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0
- Final 2.0.0 public release package cut from the verified RC3 branch.
- Keeps the 2.0 Release Preflight / Smoke Test inside Setup & Tools.
- Keeps the downloadable Launch Report with environment, generated page, shortcode, Woo checkout, schedule, and navigation handoff checks.
- Includes the RC3 admin polish for improved Ready / Review / Blocked preflight summary pill spacing.
- No booking/payment logic changes, no import logic changes, no shortcode changes, no page generator changes, and no database schema changes from RC3.

Version 2.0.0-rc3 - Release Candidate Polish
- Polished Setup & Tools preflight summary pill spacing and internal padding so Ready / Review / Blocked labels have proper breathing room.
- No booking, payment, import, shortcode, page generation, database schema, or front-end flow changes.

ClubOps Global by Web Vine Studio 2.0.0-rc2
- Added a live 2.0 Release Preflight / Smoke Test table inside Setup & Tools.
- Preflight checks environment readiness, PHP/WordPress minimums, permalinks, WP-Cron status, WooCommerce checkout availability, ClubOps database tables, resources, programs/events, memberships/packages, brand settings, admin email, scheduled jobs, generated page coverage, generated page shortcode/theme content, shortcode registration, member code prefix, and header/footer/navigation handoff responsibilities.
- Added preflight summary counts for Ready, Review, and Blocked items.
- Added automated preflight results to the downloadable Launch Report.
- Kept the patch launch-safe: no booking/payment logic changes and no database schema changes.

ClubOps Global by Web Vine Studio 2.0.0-rc1
- Moved the branch into 2.0 release-candidate mode.
- Added a 2.0 Launch Candidate Checklist inside Setup & Tools.
- Added a Download Launch Report action for client handoff and release QA.
- Launch report includes generated page URLs, core shortcodes, brand settings, and header/footer/navigation/template guidance.
- Expanded generator notes to explicitly cover theme header, footer, page templates, page titles, and navigation menus.
- Tightened Basic Theme generated page fit rules for block themes and full-width/no-title launch setups.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44.1
- Added clearer Setup & Tools menu guidance explaining that page generation creates pages, while WordPress theme navigation must still be curated when block themes auto-list every page.
- Patched Basic Theme generated pages to fit better inside default WordPress/block themes.
- Basic Theme pages now hide the duplicate default page title on generated pages when supported by the browser.
- Basic Theme pages now reduce default block-theme top spacing and full-width wrapper conflicts.
- Generated Basic Theme wrappers now start cleaner under default themes while preserving customer-facing sporty styling.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.44
- Added a larger public page generation release.
- Setup & Tools now includes two separate page-generator actions: Generate Pages and Generate with Basic Theme.
- Generate Pages creates/verifies clean shortcode-only customer pages for theme builders.
- Generate with Basic Theme creates/updates ClubOps-generated pages with a clean sporty customer-facing HTML wrapper around the live shortcode module.
- Added customer-facing themed page templates for booking, portal, account claim, waiver, check-in, programs, events, calendar, today schedule, memberships, member card, staff hub, access check, competition, live board, and app install pages.
- Page generator now stores the current generator style in hvco_default_pages_style.
- Updated shortcode reference to include hub, calendar, today, staff hub, member card, app install, and access check shortcodes.
- Aligned generated Member Card slug to /my-member-card/ while still detecting the old /member-card/ page if present.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.43
- Added public schedule widget bundle.
- New shortcodes: [hv_clubops_today], [hv_clubops_upcoming], [hv_clubops_public_schedule], and [hv_clubops_schedule_strip].
- Public Hub now includes a live Next Up schedule feed with View and Calendar actions.
- Added reusable customer-facing schedule cards for Today, upcoming activity, and schedule strips.
- Default page generator now creates Today at the Facility using [hv_clubops_today limit=12].
- Schedule widgets are transparent shortcode-friendly blocks and can be placed inside any page section.
- Added responsive card, truncation, and mobile stacking styles for schedule-heavy clubs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.42
- Added a larger public frontend hub bundle.
- New shortcodes: [hv_clubops_hub] and [hv_clubops_public_hub].
- Added generated default page: Club Hub at /club-hub/.
- Hub includes customer-facing cards for Book Now, Facility Calendar, Programs & Events, Memberships, Member Portal, Waiver, Live Facility Board, and Install App.
- Hub includes live counts for active resources, today’s posted programs, next 7 days of programs, and portal status.
- Staff users see Staff Hub and Access Check shortcuts inside the hub.
- Hub shortcode wrapper remains transparent for flexible placement inside any page section.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.4
- Patched calendar month cells so clicking the day number opens that exact day schedule.
- Day cells with activities now show a small activity count badge.
- The + more action still opens only the clicked day schedule modal.
- Added stronger focus/interaction styling for day numbers, event pills, and + more buttons.
- Keeps calendar list view scoped to the visible month and prevents full-feed dumps.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.3
- Patched calendar + more behavior so it opens only the clicked day's activities.
- + more now opens a same-page modal/day schedule for that exact date instead of switching to the full upcoming list.
- Calendar list view is now scoped to the visible month instead of dumping the full 500-item feed.
- Day schedule modal includes Details and View/Register actions per activity.
- Centered and contained + more button behavior tightened.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.2
- Patched frontend calendar month view with logic-level title truncation for day-cell event labels.
- Added responsive compact/dot mode when the calendar is placed inside narrower shortcode areas.
- Added day agenda panel for + more buttons so overflow days scroll to a clean same-page agenda section instead of forcing cramped calendar cells.
- Centered and contained + more buttons inside calendar day cells.
- Added stronger CSS containment for calendar pills, event titles, day cells, and responsive shortcode placements.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41.1
- Patched frontend calendar shortcode styling so the calendar shell stays transparent and can be placed inside any page section.
- Kept the themed calendar header and controls while removing unwanted default background behavior from the shortcode wrapper.
- Fixed calendar month cell overflow so event pills and + more buttons stay contained inside each day cell.
- Added safer box sizing, min-width, overflow, and responsive rules for calendar event labels.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.41
- Added frontend AJAX Facility Calendar.
- New shortcodes: [hv_clubops_calendar] and [hv_clubops_events_calendar].
- Calendar supports Month/List views, previous/next month, Today, type filter, search, and same-page detail drawer.
- Calendar detail drawer includes View/Register, Add to Calendar, and Copy Link actions.
- Default page generator now creates a Facility Calendar page.
- REST program data now includes ISO dates, date keys, time labels, deep links, calendar URLs, and type labels for calendar rendering.
- Patched Programs filter bar responsiveness so large filter sets wrap cleanly instead of breaking horizontally.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.40
- Added Programs share and calendar bundle.
- Customer-facing program cards now include Add to Calendar links that download a public .ics calendar file.
- Customer-facing program cards now include Copy Link for direct program deep links.
- Public program cards now include stable hvco-program-ID anchors.
- Deep-linked program cards visually highlight when opened by hash link.
- Share/calendar controls work in both Cards and List views.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.39
- Added a larger Programs discovery filter bundle.
- Customer-facing Programs chooser now includes dynamic Location filtering based on posted program locations.
- Added Availability filter for Spots Open, Waitlist Open, Free, Paid, Members Only, and Full.
- Location and availability filters work with search, type, date quick filters, time quick filters, Cards/List view, Clear Filters, URL query support, no-results state, and progressive loading.
- Added rendered public program metadata for location and availability states.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.38
- Added a larger Programs customer filter UX bundle.
- Added Clear Filters control to the customer-facing Programs chooser.
- Added no-results empty state with inline clear filters action.
- Added URL query support for program search, type, date, and time filters.
- Fixed program time metadata output so Morning/Afternoon/Evening filtering is enforced on rendered cards.
- Preserved Cards/List view, date filters, time filters, and progressive loading together.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.37
- Added customer-facing time quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Times, Morning, Afternoon, and Evening.
- Time filters work with search, type filters, date filters, Cards/List view, and Show More progressive loading.
- Added program time metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.36
- Added customer-facing date quick filters to Programs/Choose a Program pages.
- Customers can now filter by All Dates, Today, Tomorrow, Next 7 Days, and Weekend.
- Date chips work with search, type filtering, Cards/List view, and Show More progressive loading.
- Added program date metadata to public program cards for client-side filtering.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.35
- Added progressive loading to customer-facing Programs/Choose a Program pages.
- Large program catalogs now load the first 36 matching rows/cards with a Show More Programs control.
- Search and type filters still scan the full catalog, not only the currently displayed items.
- Cards/List view toggle remains customer-facing and continues to work with progressive loading.
- Added visible "Showing X of Y" result status for long program catalogs.
- No database schema changes.

ClubOps Global by Web Vine Studio 1.8.9-global.8.34.1
- Added customer-facing Programs view toggle for Cards/List.
- List view keeps search and type filtering active while presenting long program catalogs in a cleaner row layout.
- Added local browser persistence for the selected programs view.
- Added responsive list-view styling for flyers, badges, metadata, price/status badges, and registration actions.
- No database schema changes.

= 1.8.9-global.8.34 =
* Added backend Staff Checklist Template manager.
* Added hvco_manage_staff_checklists role capability for managers/custom roles.
* Added ClubOps Global > Staff Checklist screen for adding, editing, reordering, disabling, removing, and restoring front-desk checklist tasks.
* Staff Hub daily checklist now uses saved template items, with default fallback if no template exists.
* Added Staff Hub action link for checklist template managers.
* No database schema changes.

= 1.8.9-global.8.33.1 =
- Staff Hub front-end layout hotfix.
- Forced the staff-facing shortcode to break out of narrow block-theme content columns and render as a proper centered operations dashboard on desktop.
- Added critical Staff Hub layout CSS directly with the shortcode so theme width rules cannot collapse the page into a thin column.
- Rebalanced handoff, checklist, KPI, panel, and action-link layouts for desktop/tablet/mobile.
- Added checklist de-duplication safety so only one clean set of daily checklist items renders.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.33 =
- Added Front Desk Daily Checklist release.
- Staff Hub now includes a daily opening, operating, and closing checklist for front-desk teams.
- Checklist progress is saved per day using WordPress options, with no new database table required.
- Completed checklist items show completion time and staff actor.
- Checklist updates are logged into the existing Activity Log as staff_checklist events.
- No database schema changes.

= 1.8.9-global.8.32 =
- Added Front Desk Handoff Notes release.
- Staff Hub now includes a shift handoff form for opening notes, shift changes, closing notes, maintenance, customer issues, billing notes, and safety notes.
- Handoff notes are saved into the existing Activity Log as staff_handoff events, so no new database table is required.
- Staff Hub shows the latest 24 hours of handoff notes with staff actor and timestamp.
- No database schema changes.

= 1.8.9-global.8.31.1 =
- Front Desk Staff Hub visual hotfix.
- Expanded the staff hub shortcode layout so it breaks out of narrow theme content columns on Twenty Twenty-Five and similar block themes.
- Rebalanced staff hub KPI cards, panels, headings, action tiles, and empty states so the page feels like a full operations dashboard instead of a thin embedded card stack.
- No business logic changes and no database schema changes.

= 1.8.9-global.8.31 =
- Added Front Desk Staff Hub release.
- Added [hv_clubops_staff_hub] and [hv_clubops_front_desk_hub] shortcodes for staff-facing daily operations.
- Added today's reservation run sheet, check-in count, programs/events today, staff coverage, follow-ups due, billing attention, and action links.
- Added Staff Hub to default page generation as /staff-hub/.
- Preserved internal slugs, tables, capabilities, and existing staff/admin workflows.
- No database schema changes.

ClubOps Global by Web Vine Studio v1.8.9-global.8.30
- Updated client-facing product branding to ClubOps Global by Web Vine Studio.
- Updated plugin header, admin menu label, admin hero brand line, license screen language, setup/release docs, and PWA/default user-facing labels.
- Preserved internal slugs, shortcodes, capabilities, table prefixes, class names, and hooks such as hv_clubops and hvco.

= 1.8.9-global.8.29 =
- Added Member Portal Dashboard / Self-Service Home release.
- Enhanced [hv_clubops_portal] for logged-in linked members with a personalized dashboard.
- Added portal KPI cards for access status, upcoming bookings, open balance, and available credits.
- Added next booking panel with Pay Now and Cancel actions when available.
- Added memberships/credits summary, payment attention list, program/event registration list, waiver/access summary, and quick action tiles.
- Added unlinked-login state with Claim Account and Book as Guest actions.
- Added [hv_clubops_portal_dashboard] as an alias for the upgraded portal experience.
- No database schema changes.

= 1.8.9-global.8.28 =
- Added Admin Command Center / Launch Dashboard.
- Added Today at a Glance cards for reservations, check-ins, programs/events, staff shifts, follow-ups due today, and invoices due soon.
- Added Action Required queue for payment holds, approvals, reservation payment attention, past-due invoices, overdue follow-ups, refund/credit follow-up, and waitlist entries.
- Added Quick Actions for common front-desk workflows.
- Added Launch Readiness panel for sender configuration, generated pages, resources, membership plans, programs/events, waivers, WooCommerce checkout, and staff roles.
- No database schema changes.


= 1.8.9-global.8.27.5 =
- Added production mail transport hardening for ClubOps Communications.
- Added configurable Send From Name and Send From Email fields to Communications settings.
- Added From and Reply-To headers to communication test emails, automated reminders, and booking/payment emails.
- Expanded Mail Delivery Diagnostics to distinguish LocalWP Mailpit success from live server SMTP/PHP mail delivery problems.
- Added SMTP hook detection hint and From domain visibility for staging/production troubleshooting.
- No queue sending logic changed.


= 1.8.9-global.8.27.4 =
* Communications mail delivery diagnostics added.
* Template test email now reports wp_mail acceptance versus failure detail when available.
* Added Mail Delivery Diagnostics panel explaining LocalWP/Mailpit/MailHog and production SMTP requirements.
* Added activity log detail for test email accepted/failed results.
* No queue sending logic changed.

v1.8.9-global.8.27.3
* Communications visual hotfix: moved Template Test Email out of the narrow sidebar grid into a full-width row.
* Fixed Template Test Email form fields overflowing under the template cards.
* Preserved communication queue preview and email sending logic.

v1.8.9-global.8.27.2
- Communications visual hotfix for the Template Test Email panel.
- Rebuilt the test email controls as a clean responsive full-row layout.
- Kept the existing safe test email sending logic unchanged.

= 1.8.9-global.8.27.1 =
* Hotfix: rendered the Communications queue preview panel that was added in 8.27 but not called on the admin page.
* Hotfix: rendered the safe template test email panel inside Communications.
* No communication sending logic changed.

= 1.8.9-global.8.27 =
* Added Communications QA and Delivery Bundle.
* Added eligible recipient queue previews for reservation reminders, payment nudges, program/event reminders, and low-credit alerts.
* Added CSV export for each communication queue without sending messages.
* Added safe test-email tool for communication templates using sample token data.
* Added expanded communication token reference and activity log entries for queue exports and test sends.

= 1.8.9-global.8.26 =
* Added Operations Reporting Bundle.
* Expanded Reports dashboard with membership billing health, lifecycle health, CRM pipeline, follow-up load, staff coverage, and daily check-in trend panels.
* Added billing, CRM pipeline, follow-ups, staff schedule, and check-in CSV exports.
* Added report KPIs for membership revenue, active/paused plans, past-due invoices, open/overdue follow-ups, pipeline value, staff shifts, activity events, and email subscribers.
* Added report export activity logging.

Version 1.8.9-global.8.25
- Added CRM Pipeline page for member/lead sales and retention tracking.
- Added pipeline fields to member records: stage, source, value, last contact, next contact, and pipeline notes.
- Added pipeline stats, stage/source/status/next-contact filters, keyword search, inline row updates, bulk stage/source/next-contact updates, and CSV export.
- Converted/won pipeline stage can mark the member active; lost stage can mark the member inactive.
- Added activity log entries for pipeline updates, bulk updates, and exports.

Version 1.8.9-global.8.24
- Member CRM Follow-Ups Stage 2 bundle.
- Added CSV export for the current follow-up queue view.
- Added bulk complete, reopen, dismiss, and delete actions for follow-ups.
- Added quick stats links for open, overdue, due today, and assigned-to-me follow-ups.
- Added priority filtering and keyword search for follow-ups.
- Added staff reminder email action for open follow-ups.
- Added dismiss follow-up action.
- Added Follow-Up link and open follow-up status column to the Members admin table.
- Added CRM styling for priority rows, overdue tasks, bulk actions, and clickable stats.

Version 1.8.9-global.8.23
- Added Member CRM Follow-Ups Stage 1.
- Added Follow-Ups admin page for member/lead sales, billing, waiver, renewal, program, and retention tasks.
- Added member_tasks database table with assigned staff, due date/time, priority, type, status, and completion tracking.
- Added dashboard tile and admin menu priority for Follow-Ups.
- Added task completion, reopening, deletion, and activity log entries.

Version 1.8.9-global.8.22
- Added Staff Schedule CSV export using the current date/user/status filters.
- Added Print Schedule action and print stylesheet for cleaner staff schedule printouts.
- Added activity log entry when a staff schedule export is generated.

Version 1.8.9-global.8.21
- Staff Schedule Stage 2: added shift editing, staff/status filters, overlap protection, and coverage snapshot.
- Added Allow overlap option for intentional double coverage.
- Added activity log entries for shift updates.

Version 1.8.9-global.8.20.1
- Hotfix: restored Staff Schedule admin page callback to prevent WordPress critical error.
- Added safe add/delete staff shift handlers and schedule list rendering.
- Added table self-check on Staff Schedule page so the staff shift table is created if needed.

Version 1.8.9-global.8.20
- Added Staff Schedule Stage 1.
- Added ClubOps > Staff Schedule for shift planning, coverage notes, date filtering, and staff shift deletion.
- Added hvco_staff_shifts database table with schema refresh on update.
- Added dashboard tile and activity log object links for staff shifts.

Version 1.8.9-global.8.19
- Added Household Shared Benefits Stage 1.
- Plans/packages can now be marked as shareable with linked household accounts.
- Added covered household roles and optional household member limit on plans.
- Linked spouse/dependent/billing/guest roles can receive member pricing/access only when the plan explicitly allows sharing.
- Access Check now shows when access is granted through a shared household plan.
- Booking/program pricing can now recognize eligible shared household membership benefits while defaulting all plans to no sharing.

Version 1.8.9-global.8.18
- Added Program Make-Up Credit Stage 1.
- Marking a paid cancelled registration as Make-Up now creates or updates a real member credit package when the registration is linked to a member.
- Added a system-created Make-Up Credits package used for staff-issued make-up credits.
- Added credit ledger entries for make-up credits issued from program/class/event registrations.
- If no member is linked, ClubOps logs that staff must add the credit manually.

Version 1.8.9-global.8.17.1
- Admin menu cleanup patch.
- Reordered ClubOps submenu into a predictable dashboard-first, alphabetical operations flow.
- Kept Settings, Setup & Tools, and License grouped at the bottom where staff/admins expect them.
- No database, billing, booking, program, or shortcode behavior changed.

Version 1.8.9-global.8.17
- Added Program Refund/Credit Follow-Up Stage 1.
- Paid cancelled registrations can now be resolved as refunded, credit issued, or make-up credit from the roster.
- Session cancellation now opens a follow-up status for paid registrations marked refund due.
- Roster stats now include refund/credit follow-up count.
- Roster CSV export now includes follow-up status, date, and notes.
- Activity log records refund/credit follow-up actions.

Version 1.8.9-global.8.16
- Added Program Cancellation Stage 1 from the roster screen.
- Staff can cancel a session, close public registration, cancel active/waitlist registrations, and optionally notify the roster by email.
- Paid registrations are marked refund_due for staff follow-up instead of pretending a refund happened automatically.
- Added activity log entries for session cancellations, registration cancellations, and cancellation emails.

Version 1.8.9-global.8.15
- Added roster messaging for programs/events.
- Staff can send one-time individual emails to registered attendees, waitlist members, attendance groups, or awaiting-payment registrations.
- Added roster email tokens for brand, customer, program, status, attendance, and waitlist position.
- Added activity log entries for roster email batches and per-registration delivery results.

Version 1.8.9-global.8.14
- Added Program Waitlist Stage 1.
- Confirmed/program capacity counts now exclude waitlist records so waitlist members do not consume seats.
- Roster view now shows waitlist totals and waitlist positions.
- Staff can promote waitlist registrations into a confirmed/payment-hold registration when space is available.
- Paid waitlist promotions can create the WooCommerce pay-now order at promotion time.
- Public program cards now show waitlist availability and waitlist counts.

Version 1.8.9-global.8.13
- Added Program Roster & Attendance Stage 1.
- Added roster view for each program/event from the Programs admin table.
- Added attendance statuses for program registrations: Present, No-Show, Excused, and Not Marked.
- Added quick attendance actions from Recent Registrations and roster view.
- Added roster CSV export for staff/admin use.
- Added attendance totals and activity log entries for roster/attendance actions.
- Added schema refresh on version change so new attendance columns can be added during plugin updates.

Version 1.8.9-global.8.12
- Added Membership Billing Processor setting with safe default: WooCommerce Pay-Now Notices.
- Added Gateway Recurring Billing option as a reserved/future route for direct gateway/token support.
- Added Settings and Billing Center notices explaining Woo notice mode, grace-period suspension, and why saved-card auto-charge is not enabled yet.
- Kept all existing monthly billing behavior on the Woo notice/pay-now flow so current staging/live workflows do not break.

Version 1.8.9-global.8.11
- Added Membership Billing Recovery Stage 1.
- Added billing recovery settings for grace days, reminder interval, maximum automatic reminders, and final notice timing.
- Added monthly billing email and final notice templates to Settings.
- Added recovery tracking on membership invoices: reminder count, last reminder date, final notice date, and suspended date.
- Billing Center now shows recovery status per invoice and final-notice queue count.
- Added manual Final Notice action for open membership invoices.
- Monthly billing processing can now send repeated recovery reminders on cadence and final notices after the configured due-date threshold.

Version 1.8.9-global.8.10
- Added Membership Lifecycle Stage 1.
- Added pause/freeze controls for member plans, including optional resume dates.
- Added resume access controls for paused memberships/packages.
- Added scheduled cancellation dates for end-of-term cancellation workflows.
- Added clear scheduled cancellation action.
- Added immediate cancellation action with lifecycle logging.
- Added lifecycle fields to member plan records for pause dates, cancellation dates, cancellation timestamps, and notes.
- Monthly billing now runs lifecycle processing before creating invoices, so paused plans are not billed until resumed and scheduled cancellations can complete automatically.
- Member portal now shows paused/frozen and scheduled-cancel status when relevant.
- Membership assignment table now includes lifecycle status and staff action controls.

Version 1.8.9-global.8.9
- Added ClubOps → Billing Center for monthly membership invoice review.
- Added dashboard Billing tile for monthly invoices, pay-now orders, and past-due review.
- Added billing filters by status, search, and due-date range.
- Added billing stats for open invoices, past due totals, due soon, and paid this month.
- Added manual billing check button to create due invoices from the admin.
- Added invoice actions: create/open WooCommerce order, send reminder, checkout, mark paid offline, and void invoice.
- Added offline paid handling to reactivate membership access and member status.

Version 1.8.9-global.8.8.2
- Rebuilt membership card print flow to print one isolated CR80-style wallet card instead of the full page.
- Added popup/isolated print document so background colors and barcode bars render correctly when printing to PDF.
- Added fallback print-root behavior if popups are blocked.

Version 1.8.9-global.8.8.1
- Staff role builder admin CSS cleanup for capability checkbox layout and readability.
- Fixed permission descriptions wrapping into the narrow checkbox column.
- Improved Add Custom Staff Role permission grid spacing and responsive behavior.

HV ClubOps Global v1.8.9-global.8.8

= 1.8.9-global.8.8 =
- Added dynamic Staff Role Builder in ClubOps > Staff.
- Staff roles can now be created, renamed, edited, and permission-tuned from the backend.
- Default ClubOps roles remain protected from deletion but their capabilities can be adjusted.
- Added dedicated hvco_access_check capability for member card scanning / staff access checks.
- Access Check now uses the new access-check capability while still honoring manage-checkins for backwards compatibility.
- Members admin now links directly to backend Access Check for each member when the current user has permission.
- Added household/shared-account access evaluation stage: linked billing/parent accounts can provide access context, and linked account billing issues can block or warn during staff access review.

- Added Household / Account fields to member records: account role, parent/primary member, billing member, relationship label, and emergency contact fields.
- Added household/account visibility inside member admin and Access Check evaluation.
- Added Print Membership Card button on the member card shortcode page.
- Added CR80-style wallet-card print CSS for scannable Code 128 membership cards.
- Preserved v1.8.9-global.8.6.2 scannable member card and Access Check features.

= 1.8.9-global.8.8 =
* Replaced the visual-only member card barcode bars with a real Code 128-B barcode renderer.
* Member card barcode now encodes the exact ClubOps member code so common scanners can type the code into Access Check / Check-In fields.
* Added scanner-friendly quiet zone, readable height, and printed code fallback under the barcode.
* Access Check fields already accept scanned member codes because scanners behave like keyboard input.

= 1.8.9-global.8.8 =
* Added My Member Card and Staff Access Check to Setup & Tools -> Create / Verify Pages.
* Default page generator now creates/verifies pages for [hv_clubops_member_card] and [hv_clubops_access_check].
* Keeps the v1.8.9-global.8.6 Access Check / Digital Member Card layer intact.

= 1.8.9-global.8.6 =
* Added Digital Membership Card shortcode: [hv_clubops_member_card].
* Added Staff Access Check shortcode: [hv_clubops_access_check].
* Added ClubOps -> Access Check admin screen for scanning/searching member code, email, phone, or name.
* Access Check evaluates member status, active/suspended memberships, open monthly invoices, waiver status, today's reservations, and whether the member is already checked in.
* Added Record Check-In action from Access Check using the existing check-in ledger.
* Added Access Check dashboard launcher tile.
* Added audit log entries for access checks and access check-ins.
* Added frontend/admin styling for digital cards, access results, barcode-style member codes, and status states.

= 1.8.9-global.8.5 =
* Added CSV Import Preview / Dry Run inside Setup & Tools.
* Preview validates Members, Resources, Membership Plans, Programs/Events, and Leagues/Tournaments before import.
* Preview reports estimated creates, updates, skipped rows, invalid rows, existing matches, and row-level warnings without writing to the database.
* Added audit entries for preview runs and completed CSV imports.
* Added Owner Recovery admin-post hook if it was not already registered.


= 1.8.9-global.8.4 =
* Added ClubOps Activity Log admin screen as the first low-risk operations-replacement layer toward deeper club-management parity.
* Added filters for object type, event type, date range, actor, and keyword search.
* Added CSV export for recent/filtered activity records.
* Added Activity Log launcher tile and submenu entry.
* Added Activity Log capability to ClubOps manager/admin roles.
* Added audit entries for settings and dashboard tile changes.

HV ClubOps Global v1.8.9-global.8.3
- Fixed public membership checkout forms that could hit WordPress's "The link you followed has expired" page when frontend caching/builders served a stale or altered nonce.
- Membership purchase forms now use a dedicated public nonce field and a same-site fallback instead of WordPress's hard-stop nonce screen.
- Added a friendly frontend expired/cached form message instead of a dead-end WordPress error.
- Tightened public membership card title wrapping so long plan names like Student/Senior Monthly do not overflow or clip in the first card.

== 1.8.9-global.8.2 ==
- Hotfix: live board status dot now reflects actual resource status instead of the imported resource/accent color. Available now shows green, occupied remains blue, reserved is amber, blocked/closed is red, and inactive is gray.
- Fixed live board status badge CSS selectors so the visible pill matches the status class correctly.
- Converted common display icon keywords like pickleball, stadium, golf, coffee, and locker into icons instead of printing the raw words before resource names.


== 1.8.9-global.8.1 ==
- Hotfix: restored the missing membership billing scheduler method referenced during plugin boot.
- Prevents a runtime fatal error caused by v1.8.9-global.8 calling maybe_schedule_membership_billing() before the method existed.
- Keeps Stage 1 monthly billing behavior from global.8 intact.

HV ClubOps Global v1.8.9-global.8
- Adds Stage 1 monthly membership billing ledger for Monthly Billing plans.
- Creates monthly WooCommerce invoice orders and portal Pay Now buttons when bills are due.
- Adds grace-period suspension/reactivation logic for unpaid monthly membership bills.
- Hooks billing due notices into email and existing reminder/push pipeline.

= 1.8.9-global.8 =
- Added membership billing method: one-time, paid in full, or monthly billing.
- Added commitment months and calculated checkout charges for paid-in-full monthly memberships.
- Program registration membership upsells now use the same calculated membership charge as the membership chooser.
- Plan CSV import/template supports billing_model and commitment_months while preserving older import files.

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.

= 1.8.9-global.6 =
- Added enforced account-first registration flow for programs/events.
- Added inline portal account creation for non-logged-in program/event registration.
- Added WooCommerce customer/user linking to program registration flow.
- Added visitor/member/unlimited pricing logic for open play sessions.
- Added membership upsell option inside program/event registration flow.
- Added combined WooCommerce checkout support for membership + program registration.
- Paid registrations now remain payment-hold until WooCommerce payment completes.
- Free registrations/events still confirm immediately.
- Improved frontend registration messaging so checkout is the clear next step.


1.8.9-global.6
- Removed hard-coded unlimited/free assumptions from program registration pricing.
- Program/Event pricing now strictly uses configured non-member and member price fields.
- Added optional Included With Eligible Unlimited Plan flag, default off.
- Added non-member/member pricing fields to leagues and tournaments plus CSV import columns.


2.0.1 Gift Cards and Admin Menu Organization
- Added internal ClubOps Gift Cards with issue, edit, reissue/change code, balance edit, manual redemption, adjustments, transaction history, WooCommerce purchase flow, gift card email delivery, public purchase shortcode, public balance checker shortcode, and staff redeem shortcode.
- Added optional WooCommerce cart/checkout gift card application with redemption recorded when payment completes.
- Cleaned ClubOps admin menu order: Dashboard remains first, operational pages sort alphabetically, and Settings / Setup & Tools / License stay at the bottom.


## 2.1.1 - Court Ops / Gift Cards Dashboard Integration
- Added Court Ops and Gift Cards to dashboard launcher tile definitions and default visible tiles.
- Added dashboard command-center metrics for paddle queue, court sessions, permanent reservations, gift card activity, and open gift card balance.
- Added action-required rows for Court Queue No-Shows and Gift Card Activity Today.
- Added Quick Actions for Court Ops and Gift Card issue/redeem workflows.
- Added Launch Readiness rows for Court Ops resource/session setup and Gift Cards table/status.
- Added dashboard stat cards for Court Sessions, Paddle Queue, Permanent Reservations, Active Gift Cards, and Gift Card Balance.
- Added dashboard shortcode references for gift card and court operations shortcodes.


## 2.2.0 - Support Ticket System and Central Support Hub
- Added client-side ClubOps Support Tickets module.
- Added local support ticket tables and message history table.
- Added Support Tickets admin page for facility installs.
- Added ticket creation, local storage, status changes, assignment, replies, private notes, and retry hub sync.
- Added default support email routing to growth@webvinemarketing.com.
- Added optional remote push to central ClubOps Support Hub endpoint with site key and HMAC shared-secret signature.
- Added REST callbacks so a central support hub can push replies and status updates back to the facility install.
- Added [hv_clubops_support_ticket] shortcode.
- Added Support Tickets to dashboard tiles, stats, quick actions, action required, launch readiness, and shortcode references.
- Added separate ClubOps Support Hub parent plugin for Web Vine Studio site.
- Parent hub receives client tickets, stores sites/tickets/messages, assigns tickets, answers tickets, closes tickets, emails replies, and pushes replies/status back to client installs when endpoint and secret are configured.


## 2.2.1 - Support Tickets Access Fix
- Fixed Support Tickets admin menu registration.
- Added dedicated hvco_manage_support_tickets capability.
- Added capability assignment for administrator, ClubOps admin, and ClubOps manager roles.
- Added manage_options fallback so a real site owner/admin cannot be blocked from the Support Tickets page.
- Added runtime admin_init capability refresh for already-installed sites.
- Updated dashboard tile capability handling so admins can access Support Tickets from tiles and menu.


## 2.2.2 - Support Desk UI + Client-Side Auto Routing
- Reworked ClubOps > Support Tickets into a themed support desk instead of a raw routing settings screen.
- Removed endpoint/site key/shared secret fields from the normal facility workflow.
- Support now works by default through local ticket storage plus email routing to growth@webvinemarketing.com.
- Advanced hub routing is now tucked behind an internal advanced panel for Web Vine support use only.
- Added install reference/status display so support tickets can be matched to a facility install without asking the client to configure routing.
- Added premium Support Desk layout, hero, stats, recent ticket cards, ticket history styling, and support status pills.
- Preserved central hub routing for installs where Web Vine chooses to configure it.


## 2.2.3 - Automatic Support Routing
- Removed all customer-facing routing setup fields from the normal support workflow.
- ClubOps now generates the install support identity, site key, and shared secret automatically.
- Email support routing to growth@webvinemarketing.com is enabled automatically.
- Central hub sync is attempted automatically using generated credentials.
- Parent Support Hub v1.0.2 can auto-register incoming ClubOps installs from the first ticket.
- Replaced raw remote status labels like "not sent" with customer-safe labels such as Email Sent, Hub Synced, and Email Sent / Hub Pending.
- Fixed Support Email status pill wrapping so long email addresses do not hang outside the card.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.3 WP UPLOAD FIX
FILE: HV-CLUBOPS-v1.8.9-global.3-WP-UPLOAD-FIX.zip
============================================================

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.0
FILE: HV-CLUBOPS-WP-SAFE-v1.8.9-global.0.zip
============================================================

ClubOps Global Changelog
Version: 1.8.9-global.0
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: UNKNOWN
MODULE: GENERAL UPDATE
FILE: UPLOAD-THIS-hv-clubops-global7.1.zip
============================================================

ClubOps Global Changelog
Version: 1.8.8-global.7.1
Release Type: License UI Hotfix / Full Plugin Build

Changed
- Removed the customer-facing License Server URL display from the ClubOps license activation screen.
- Replaced it with clean user-facing copy: license verification is handled automatically by Web Vine Marketing.
- Stopped saving the license API endpoint in customer-facing plugin options.
- Kept the license endpoint internal to the plugin code.
- Bumped plugin version to 1.8.8-global.7.1 for traceability.

Preserved
- All v1.8.8-global.7 functionality.
- Facility Modes / Vertical Packs.
- Gym / Fitness Facility Mode.
- Starter resources, plans, and class templates.
- Booking, memberships, waivers, check-ins, live board, email opt-in, PWA, reports, WooCommerce support, and license gating.
- Full plugin assets and included files.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.0 (1)
FILE: UPLOAD-THIS-hv-clubops-v1.8.9-global.0 (1).zip
============================================================

ClubOps Global Changelog
Version: 1.8.9-global.0
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.0
FILE: UPLOAD-THIS-hv-clubops-v1.8.9-global.0.zip
============================================================

ClubOps Global Changelog
Version: 1.8.9-global.0
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.2
FILE: UPLOAD-THIS-HV-CLUBOPS-v1.8.9-global.2.zip
============================================================

= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.3
FILE: UPLOAD-THIS-HV-CLUBOPS-v1.8.9-global.3.zip
============================================================

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.



============================================================
VERSION: 1.8.9
MODULE: GLOBAL.4
FILE: UPLOAD-THIS-HV-CLUBOPS-v1.8.9-global.4.zip
============================================================

1.8.9-global.4
- Fixed public program/event listings so recurring imported schedules show on frontend shortcodes.
- Added open_play to public program scope.
- Recurring active schedules no longer disappear solely because the template start date is older than today.

= 1.8.9-global.3 =
* Added weekly recurring schedule support for Programs & Events.
* Added weekly recurring schedule support for Leagues and Tournaments.
* Added recurring fields to admin creation forms with default recurring OFF.
* Added CSV recurring import columns for programs/events.
* Added CSV recurring import for leagues/tournaments.
* Added CSV template examples for recurring programs and recurring competitions.
* Added generated future occurrence logic with missing-occurrence dedupe.
* Added recurrence metadata columns to programs and competitions.
* Keeps matches manual: recurring league/tournament dates do not auto-generate matches until staff chooses to generate matches.


= 1.8.9-global.2 =
- Improved PWA install handling for Android, desktop, iPhone, and iPad.
- Added generated safe-zone maskable PNG icons so wide/rectangular logos do not get cropped by Android app icon masks.
- Added iOS apple-touch-startup-image generation for common iPhone/iPad launch sizes.
- Added optional splash background image setting.
- Updated install shortcode to use the configured PWA App Name instead of hard-coded labels.
- Improved splash/logo sizing in standalone mode.

ClubOps Global Changelog
Version: 1.8.9-global.2
Release Type: PWA Install / Splash Update

Added
- Device-aware PWA install logic for Android, iPhone/iPad, and desktop browsers.
- Global browser install prompt capture using beforeinstallprompt when supported.
- iPhone/iPad install guidance for Safari Share / 3-dot menu / Add to Home Screen flows.
- Configurable PWA splash screen for standalone app launches.
- New PWA settings for splash logo, background color, title, subtitle, and duration.
- Improved manifest icon MIME detection for PNG, JPG, WebP, and SVG icon URLs.
- App-mode document classes for standalone/fullscreen launches.

Changed
- [hv_clubops_pwa_install] now renders a richer install panel with device-specific instructions.
- PWA branding keeps ClubOps as the install/app name while the facility can remain white-labeled elsewhere.
- Existing reminder push controls remain available from the install panel.

Preserved
- All v1.8.8-global.7.1 license UI hotfix behavior.
- Facility Modes / Gym-Fitness Mode.
- Booking, memberships, waivers, check-ins, programs, competitions, live board, email opt-in, PWA, push reminders, reports, WooCommerce support, and license gating.