Fixed embedded iframe rendering when the global floating button is enabled: both can now coexist independently.
Repackaged the ZIP with a stable kalendypro-booking/ root folder so WordPress replaces the existing plugin instead of creating versioned folders.
Added a cleanup routine for legacy versioned plugin directories created by earlier ZIP packages.
2.4.8
WordPress.org review feedback:
The public floating widget no longer displays the “Powered by KalendyPro” attribution by default. A new opt-in option is available under KalendyPro → Settings → Front-end module → Attribution for administrators who explicitly wish to display it.
Documented in the readme that all bundled JS/CSS files are provided in human-readable, non-minified form (see the new Source code section).
Renamed the localized JavaScript global from KalendyProAdmin to KalendyProBookingAdmin to use a more plugin-specific identifier. All internal references updated; no functional change.
Confirmed that the official text domain is kalendypro-booking across all PHP files, JS strings and the readme.
No regression on existing functionality.
2.4.5
WordPress.org compliance pass:
Bundled FullCalendar locally (no more jsDelivr / external CDN enqueue)
Hardened POST sanitization in admin AJAX handlers (explicit per-field sanitization, no dynamic $_POST[$f])
Added nonce field and verification on the bookings filter form
Removed manual load_plugin_textdomain() (translations are loaded automatically by WordPress.org since 4.6)
Shortened short description (≤150 characters)
Updated Author URI to dedicated plugin presentation page
No functional change
2.4.4
WordPress.org compliance: full English readme, English plugin header, Contributors fixed to laubro
Removed inline <script> rendering in shortcode output; floating widget now auto-initializes via a data attribute and the enqueued script
Wrapped all hardcoded admin/front strings with translation functions (kalendypro-booking text domain)
Localized JavaScript strings via wp_localize_script
Cleanup pass: removed unused dead code, harmonized comments
2.4.3
Stability fixes for the admin calendar and floating widget
2.4.2
Harmonized WordPress header: Requires at least 5.9, Requires PHP 7.4, Tested up to 6.9.4
Rewrote the External services section to explicitly declare KalendyPro and Supabase
Added a security note about the integration token (admin + readme)
Fixed the documented constant name (KALENDYPRO_DEFAULT_API_URL)
Cleanup: removed front-end console.log, harmonized comments and changelog
2.4.1
Documented the API endpoint as used in production (Supabase infrastructure, EU)
No functional change
2.4.0
Official rename: “KalendyPro” → “KalendyPro Booking”
Full WordPress header and WordPress.org compliance
Added the External services section to the readme
Added the Privacy section
Harmonized shortcode documentation
API URL can be overridden via PHP constant KALENDYPRO_DEFAULT_API_URL or filter kalendypro_default_api_url
General cleanup, translations prepared (Text Domain kalendypro-booking)
2.3.2
Fixed status preservation when creating an appointment from the admin planning
Fixed UUID error when editing without a selected employee/service
“Month” view set as default on the Planning page
2.3.1
Fixed planning display (FullCalendar) and the “New appointment” button
Fixed double rendering in floating mode (the embedded iframe no longer appears when the global floating button is active)
2.3.0
Full detail panel for each appointment
Direct actions: email reminder, SMS reminder, mark “no-show”, cancel
New appointment notifications (badge on the KalendyPro menu, 90s polling)
Extended statuses: pending_confirmation, no_show
2.2.0
Interactive calendar (FullCalendar) Month / Week / Day
Create and move appointments directly from the planning