## [1.5.1] - 2025-01-20 ### Added - Add support for PHP 8.4 (#1640) - Add new secret token header field to webhooks and default to X-EA-Token (#1607) - Add company colors to notifications (#1569) - Add Albanian Language Translations (#1646) ### Fixed - Fix the date parsing issue on Safari web browsers during the booking process (#1584) - Fix working plan configuration am/pm hour parsing so that it works in all languages (#1606) - Improve the CalDAV syncing mechanism so that it connects to more systems without problems (#1622) - Fix various 1.5.0 API issues (#1562) - Correct email issues by replacing the internal email library with phpmailer (#1587) - Fix ICS file mimetype (#1630)∏ - Incorrect Timezone Handling in CalDAV Synchronization Causes Time Shifts (#1626) - No color change in the appointment modal window (in the backend calendar) (#1641) - The plain user password might appear in the log messages in case of an error (#1590) - Fix loop when going a month back in an edge case (#1577) - Dedicated provider links do not pre-select the relevant provider on the booking page (#1651) - Correct the service / provider booking header display (#1650) ## [1.5.0] - 2024-07-07 ### Added - Display month with the earliest available day (#1075) - Allow admins to define the business closed dates (blocked-periods) (#432) - Allow working plan exceptions to be defined as non-working days (#1383) - Create an official docker image of the project and host it on Docker Hub(#1116) - Automatically select the next available date in the booking page or display a message if this month is unavailable (#1204) - Add Open Graph information to the public booking page so that it renders nicely once shared on social media apps (#1382) - Preselect the date with a query parameter (#1376) - Add the location and notes fields to the appointment email notifications (if a value was provided) (#1341) - Add date, from and till query parameters to the filter the appointments index results by date (#1134) - Allow the users to define their own status and assign them to appointments (#244) - Add new setting for limiting new public bookings in the future (#1203) - Automatically enable the secure cookie config if the current installation uses HTTPS (#1126) - Add language and timezone properties to the customer API resource (#1157) - Add support for the definition of custom webhooks via the settings page (#581) - Allow the user to select their own preferred language (#1263) - Support multiple Bootswatch themes for the app (#1205) - Providers and secretaries must only be able to see and manage their own customers (#1199) - Use the default service duration if the user just clicks on a calendar slot for creating a new appointment (#1237) - Google Calendar synchronisation failure when symbols/emoji appear in events to be imported (#1182) - Add the customer timezone field in the appointment modal of the calendar page (#1094) - Add a new setting that toggles the login link of the booking page (#1148) - Add custom Matomo analytics integration (#974) - Prefill the form field though url parameters (#1021) - Color code events by provider or service (#422) - Service duration values shorter than 5 minutes should be acceptable via the services page (#1110) - Add a new "is_private" flag to services and providers so that they do not appear in the booking page (#378) - Skip the first booking step when only one service and one provider are available (#349) - Enable the change of the brand logo and colors from the backend (#789) - Add the ability to temporarily block new appointments / set away message (#940) - Add optional (configurable with setting) phone number validation (#820) - Add an option to deactivate the remove-all-data function for customers (#808) - Skip the first booking step if both provider and service are preselected (#1117) - Make delete appointment via API to send emails just like the calendar page does (#1101) - Create new layout structure for the markup, so that common HTML markup is being reused (#1152) - Have an option to hide customer data fields during booking (#1081) - Add a SECURITY.md file to the repository (#1122) - Add support for custom fields on customers (#1133) - Add from email/name and reply-to settings in the email.php configuration file (#1465) - Create a new setting that will define the default timezone of the application (#1390) - Integrate CalDAV Protocol for appointment syncing (#209) - Add LDAP / Active Directory integration (#128) ### Changed - Do not allow a customer to book the same hours multiple times (#1420) - All the user roles with access to the backend calendar page can filter by services (#956) - Update Bootstrap to version 5 (#1150) - Update FullCalendar to version 5 (#1151) - The availability generation algorithm needs performance improvements when many appointments are stored in the system (#1171) - Support for relative paths when loading resources or working with the session (#1158) - Support line breaks when displaying the service description (#1149) - Remove the CodeIgniter fork from the composer.json file and re-import the system directory (#1109) ### Fixed - Sync all the providers without errors, when the user clicks on the "sync" button and "all" is selected in the calendar page (#1365) - Non-working time not showing correctly in the week view of calendar (#1381) - Make sure the booking cancellation is a post request and has a reason value provided (#1178) ### Removed - Remove the engine directory and files form the app (they're deprecated) (#971) - Remove the PHPMailer dependency from the app and use the built-in CodeIgniter mailer (#970) ## [1.4.3] - 2022-03-08 ### Added - #1208: Security configuration enhancements in the application. - #1209: Add support for PHP 8.1. ### Changed - #1207: Replace CodeIgniter with the system directory for smaller package size and more control over the framework. - #1210: Move the change language operation into a new public controller. - #1212: Remove the Google Calendar read-only scope use as it is not needed. - #1213: Switch to go-to-latest database migration configuration for simplicity. - #1216 Replace Google Client JS with the Google Calendar Template link in the book success page enhancement. ### Fixed - #1211: The table calendar view breaks for secretaries and providers due to appointment and unavailability removals bug. - #1214: Provider and secretary users can only add unavailabilities for their authorized users bug. ## [1.4.2] - 2021-07-27 ### Added - #1004: Add support for line breaks when displaying the service description in the frontend. - #1040: Support all-day events while syncing with Google Calendar. ### Fixed - #961: Timezone/UX issue: Wrong day is selected when timezone differs by -1 day. - #966: Secretaries are getting notification emails for providers that are not assigned to them. - #980: Missing Pacific (and potentially other) timezones. - #982: The Any-Provider option might lead to double bookings, if all the providers have the same number of appointments for the selected date. - #986: Managed to replicate appointment hash collisions. - #989: Fix Critical mistake resulting in wrong date - #990: The API availabilities controller throws an error when generating availability for services with multiple attendants. - #991: Available hours generated with the "Any Provider" option in the booking page, may use the information of a provider that is not assigned to the selected service. - #993: Add support for PHP8 (vendor packages need to be updated). - #1000: Small fix for the display of the delete button in table view. - #1011: Working plan exception - details pane shows incorrect details. - #1023: Backend calendar table events missing or duplicated. - #1026: The timepicker sliders do not work when using an iOS device. - #1029: Enhance SMTP functions of PHPMailer. - #1043: Unavailable events do not block time from services with multiple attendants. - #1046: Make sure that saving the modifications of a single break does not cancel any pending break edits. - #1068: Set minimum service duration field value to honor the value of EVENT_MINIMUM_DURATION. - #1073: Update PHPMailer dependencies. - #1074: In case of deletion of one appointment, system sends email to admins anyway even if they have email notifications disabled. - #1092: Javascript RangeError on appointment change causing disabled calendar dates. ## [1.4.1] - 2020-12-14 ### Added - #952: Add timezone support in the REST API, when managing users. - #955: Display confirmation modal when disabling a connected Google Calendar Sync. ### Fixed - #945: Google Calendar sync throws an error with all day Google Calendar Events. - #946: Typo in JavaScript code leads to a broken calendar view, when loading unavailability events with note contents. - #948: Multiple attendant services may lead to double booking. - #950: Cannot create provider without services via the API, some values (other endpoints) are optional too. - #953: Current time indicator in fullcalendar is showing time in local timezone and not in the user selected timezone. - #954: The password must be provided via the API when creating new users.