# Changelog

## 1.0-beta-1.6 | March 25, 2026

- Fixed PHP notice about loading of text domain too early.
- Fixed an issue where selecting a date range spanning multiple months was not possible.
- Added support for setting the end time of Availability Windows to midnight.
- Added "Display Mode" setting to the Booking Time field and added new "Simple" display mode that will show radio choices for time slots.
- Fixed an issue where non-flexible bookings had a zero-duration range in the booking time hidden input prior to submission, causing booking time merge tag modifiers to output incorrect values.
- Fixed an issue where the resource select placeholder was not translatable in frontend field updates.
- Fixed an issue where booking child fields did not explicitly support conditional logic.
- Fixed an issue where rescheduling allowed fully booked slots when capacity was already reached.
- Fixed an issue where the Perks tab for GP Inventory settings did not appear on Product fields set to Radio Buttons or Dropdown when GP Bookings was active.

## 1.0-beta-1.5 | March 11, 2026

- Fixed issue where rescheduling through frontend Booking Management properly re-enabled the start/end dates for range-based bookings, but not the inside dates.
- Added Default Value setting to Resource and Service fields.
- Added service/resource names to calendar sync failure and retry-failure email subjects and messages.
- Fixed an issue where time slot mode field settings for the Booking Time field were always hidden when the related Service field was set to Manual Selection. Now, the settings conditionally show depending on what services are selected in the Available Services field setting.
- Added support for using the Placeholder field setting with Resource fields.
- Fixed an issue with nightly bookings and fixed-ranges (setting min and max to the same number of nights) not selecting the intended range and consequently showing a validation error.
- Improved integration support for GP Populate Anything by adding live refresh handling to Booking Time fields.
- Fixed Pricing Rules not working with dropdown or radio button Occupancy fields.
- Added `gpb_allow_booking_current_time_slot` JavaScript filter hook to allow booking the current time slot. For example, if it's 4:15 PM and you have a time slot from 4:00 PM-6:00 PM, this would not be bookable by default. This hook enables modifying this behavior.
- Fixed an issue where service unavailability was not shown while dragging bookings in the dashboard calendar.
- Added entry meta for booking details (service, resource, dates, times, quantity, and occupancy).
- Improved frontend display behavior of Resource fields set to "Fixed Resource." Instead of no content in the field as it was assumed they would be hidden, a read-only field is present with the resource name.
- Added `gpb_ics_feed_statuses` filter for ICS feed booking statuses.
- Fixed an issue where cancelled bookings continued to show as booked and disable full-day availability.
- Added frontend calendar status CSS classes for available, unavailable, outside availability, and booked days.
- Fixed issue where dates and times generated by the `{gpb_booking:template[%SERVICE% %DATETIME%]}` merge tag were not translated to match the Site Language.
- Fixed an issue where ICS sync failure notifications were sent for services and resources that had been deleted.
- Added support for custom PHP date formats in Booking Time field merge tags. Example: `{:5:startDate,format[F j, Y]}`
- Added new [`gpb_auto_select_single_date`](https://gravitywiz.com/documentation/gpb_auto_select_single_date/) filter to enable auto-selection of single available dates in Booking Time field calendar.
- Fixed issue where booking duration calculation did not account for DST transitions, resulting in incorrect day counts when bookings spanned the start of daylight saving time.
- Added `$bookable` and `$entry` params to [`gpb_default_status`](https://gravitywiz.com/documentation/gpb_default_status).
- Added support for default and prepopulated values with Booking Time fields.
- Updated calendars in the Dashboard to respect WordPress "Week Starts On" setting.
- Added support for changing the resources when rescheduling on the customer-facing Booking Management page. Only resource fields set to "Manual Selection" are supported in this flow.
- Improved unsaved change detection with Pricing Rules and Availability Windows.
- Added support for showing Booking Time field times in visitor timezones. Enable using the new "Show times in user's timezone" setting under Appearance for Booking Time fields.
- Fixed an issue where the calendar showed resource-backed days as available despite zero remaining capacity.
- Fixed issue where you could not set Base Prices to `0` in Pricing Rules.

## 1.0-beta-1.4 | February 25, 2026

- Fixed an issue where Booking Time field values on entry detail pages showed shifted times for non-UTC site timezones.
- Fixed an issue where merge tags were blank in Booking Created notifications.

## 1.0-beta-1.3 | February 18, 2026

- Fixed issue where "Booking Updated" notification event was not firing when a booking was rescheduled, regardless of booking state.
- Fixed an issue where the admin dashboard calendar content area was not visible on mobile landscape view.
- Added new "Booking Completed" notification event that automatically sends thank you notifications when confirmed bookings end.
- Added detailed deletion preview to "Clear Sample Data" confirmation.
- Fixed an issue where initial pricing for flexible-duration bookings did not apply `minDuration` until users manually changed duration values.
- Added [`gpb_admin_calendar_event`](https://gravitywiz.com/documentation/gpb_admin_calendar_event) filter hook for customizing admin calendar events.
- Fixed an issue where comma-decimal currency values were parsed as thousands in rule summaries and totals.
- Fixed merge tags to respect WordPress date/time formats.
- Fixed an issue where long Resource Type names did not wrap correctly in the Service Resources tab on large screens.
- Fixed an issue where frontend slot availability used resource windows without enforcing service positive availability windows.
- Improved compatibility with [GP Inventory](https://gravitywiz.com/documentation/gravity-forms-inventory/) by excluding Booking fields from the allowed fields that can have their inventory tracked.

## 1.0-beta-1.2 | February 12, 2026

- Fixed issue where booking fields would fall back to base `GF_Field` class when GF Conversational Forms addon is active.
- Fixed date localization in booking time fields to respect WordPress language settings and display translated names in order summaries and entry details.

## 1.0-beta-1.1 | February 4, 2026

- Added cancel booking confirmation and updated button labels in the frontend booking management UI.
- Updated GP Bookings menu position below Gravity Forms menu.
- Fixed an issue where the Google Calendar button used `https://` protocol instead of `webcal://`.
- Added new "Lead Time" setting for Services and Resources to prevent new bookings within X amount of time.
- Fixed issue where selecting a 2-day booking in the Booking Time field would incorrectly show the price for only one day if "Treat as nights rather than days" is disabled.
- Improved frontend styling of the Booking Time field to help guard against generic table styles from interfering with the calendar display.
- Added placeholder field setting to Resource, Service, and Occupancy fields to enable customization and consistency with other Gravity Forms field types.
- Fixed issue where the time slots in the Booking Time field would not reflect the minimum duration of a service on initial load.
- Added "Recurring yearly" option to Date Range setting in Availability Windows, matching the functionality available in pricing rules. This allows Availability Windows to repeat annually (e.g., for holiday schedules or seasonal availability).
- Added new [`gpb_capacity_limit`](https://gravitywiz.com/documentation/gpb_capacity_limit) PHP filter hook to dynamically change capacity depending on the service/resource and requested dates.

## 1.0-beta-1 | January 20, 2026

- Updated date picker in the Booking Time field to allow booking from the current year onwards.

## 1.0-alpha-4.5 | January 7, 2026

- Fixed issue with settings under Appearance tab for GP Bookings fields disappearing after saving in the Form Editor.
- Updated Booking Time field's time slot picker to show manually selected time slots in the "Picker" mode when editing entries.
- Fixed UI bugs with the Manual Entry mode for Booking Time fields when editing entries.
- Fixed stray `0` showing in Customization meta box for bookables.
- Fixed issue where buffers were not showing in availability preview for resources that are inheriting buffers from a service.
- Updated Resource field's Allocation Mode setting to automatically set the Visibility setting to "Hidden" if using "Automatic Assignment." Note, it can still be set to "Visible" manually.
- Updated timezone indicator and spots left settings to be under "Appearance" for the Booking Time field.
- Fixed issue where switching the Occupancy or Service fields to "Radio Buttons" input type would result in incorrect rendering in the Form Editor until refreshing.
- Improved editing behavior for Booking Time fields by not disabling any dates/times and showing the previous selection.
- Updated the Booking Time field's new Manual Mode when editing entries to use fluid height instead of fixed.
- Updated verbiage in setup wizard.
- Added new "Show spots left" setting to Booking Time fields.
- Added new button in GP Bookings » Settings to clear sample data added by the setup wizard.
- Updated "Select Dropdown" to "Dropdown" for consistency in Input Type settings.
- Fixed issue where selecting entire Resource Types from services would cause them to be linked by resource type _and_ by specific IDs behind the scenes rather than just resource type.
- Fixed issue where moving resources to trash from the single edit screen would redirect to _all_ resources instead of staying in the context of the resource type.
- Fixed issue where newly added resource names when adding new resources through the "Resources" tab in services would persist in the input.
- Fixed issue where time slots would be shown for times blocked by unavailability windows with certain configurations on the frontend. Note, validation was rejecting these during submission properly.
- Fixed issue where single-day bookings were not possible when flexible booking durations were enabled.
- Fixed issue where admin users could not override booking status transition restrictions when updating booking statuses.

## 1.0-alpha-4.4 | December 10, 2025

- Fixed issue where rescheduling did not ignore the current booking which could prevent moving times due to buffers from the current booking. Additionally, the submit button for rescheduling is now disabled until the booking time changes away from the current time.
- Added new `{gpb_booking}`, `{gpb_datetime}`, `{gpb_service}`, and `{gpb_resource}` merge tags.
- Added support for editing booking fields when editing entries in the Gravity Forms Entry Details screen.
- Improved availability checking logic by making checks smarter by merging all adjacent Availability Windows. This fixes some issues where having a Resource field with Automatic Allocation and resources with different availability windows could always throw validation errors depending on the Availability Window configurations.
- Fixed regression where the client-side state of multiple Booking fields could collide causing the frontend behavior to not work as expected.
- Updated capability checks for GP Bookings to always allow users that have `gform_full_access` capability to do anything in GP Bookings. This better aligns with Gravity Forms' default behavior.
- Fixed issue where booking ID could get removed from the Booking field's value if using a Payment Add-On.

## 1.0-alpha-4.3 | December 2, 2025

- Fixed issue where editing entries could duplicate existing bookings if availability allowed for it.
- Fixed issue where inadvertent timezone conversion in the Booking Time field could load the wrong time slots from the REST API and show availability for the previous day.
- Added user capabilities to control who can view the GP Bookings Dashboard, edit Services/Resources, and interact with the GP Bookings settings.
- Fixed issue with Resource Calendar tab not loading in the GP Bookings Dashboard.
- Fixed pricing breakdown metabox not utilizing the default currency set in Gravity Forms.
- Fixed an issue where some bookings were missing the manage booking URL after payment.
- Fixed issue with Pricing Rules not utilizing the default currency set in Gravity Forms.
- Updated booking management pages and components to use the date and time formats configured in WordPress General Settings.
- Added ability to include GP Bookings data when exporting forms. This will include related services, resources, resource types, and availability blocks.

## 1.0-alpha-4.2 | November 25, 2025

- Updated capacity input to show a blank value if set to "Unlimited."
- Fixed regression preventing the display of Capacity when editing Services and Resources.
- Fixed issue with buffers not working as expected when creating bookings without resources.
- Removed `gpb_availability_days` filter hook. Instead, use `gpb_availability_start` and/or `gpb_availability_end`.
- Added new [`gpb_availability_start`](https://gravitywiz.com/documentation/gpb_availability_start) and [`gpb_availability_end`](https://gravitywiz.com/documentation/gpb_availability_end) filter hooks.

## 1.0-alpha-4.1 | November 20, 2025

- Fixed issue where multi-day calendar events from external calendars with past start dates, but future end dates, were not imported.
- Fixed issue where rescheduling using the `[gpb_manage]` could throw improper validation errors in some situations preventing rescheduling.
- Fixed issue where resource fields in Automatic Assignment allocation mode did not work with services that are nightly.
- Fixed issue where resource fields with Automatic Allocation would not show the resource in the entry list and entry details.
- Fixed issue preventing the "Per Occupant" pricing multiplier from being added.
- Improved behavior with multi-day events coming in from calendar syncs. Multi-day events with a start and end time are now handled correctly.
- Improved JavaScript bundle sizes.

## 1.0-alpha-4.0 | November 12, 2025

- Added Occupancy setting for services. Occupancy can be used for scenarios such as limiting the number of guests for a cabin and adjusting pricing accordingly.
- Fixed an issue where nightly bookings persisted after disabling flexible durations.
- Fixed an issue where resource pricing type override was reset to supplement after saving.
- Improved localization of calendar in Booking Time field.

## 1.0-alpha-3.10 | November 5, 2025

- Fixed an issue where ICS imports failed when calendars responded with HTTP 206 status codes.
- Fixed an issue where GP Bookings settings failed to save when WordPress was in a non-English language.

## 1.0-alpha-3.9 | October 29, 2025

- Fixed an issue where `:duration` merge tag modifiers showed incorrect values during DST transitions in calculation fields.
- Updated Calendar view in Dashboard to persist selected timeframe (Day, Week, Month).
- Fixed an issue where calendar bookings extending beyond view boundaries were hidden from display.
- Added additional merge tag format options for booking time field.
- Fixed service-level buffers not properly affecting resource availability.

## 1.0-alpha-3.8 | October 16, 2025

- Improved Booking Time field loading behavior to get rid of the "Loading service..." message.
- Added new settings to the Booking Time field to control the display of time slot end times and the timezone indicator if the visitor is in a different timezone than the site.
- Fixed regression with the Booking Time field showing times incorrectly if the person viewing the form did not have the same UTC offset as the site.
- Fixed an issue where availability preview times ignored the site timezone.

## 1.0-alpha-3.7 | October 15, 2025

- Updated Availability Windows to display "All Days" in summary when all days of the week are selected, instead of listing each individual day.
- Added support for handling fixed ranges in the Booking Time field. For example, if the service has flexible durations enabled and min/max both set to 5 days, the Booking Time field will only allow selecting ranges of 5 days.
- Fixed issue where ICS calendar import validation failed for `webcal://` URLs and calendar URLs that immediately redirected.
- Added new "Selection Mode" setting to Service fields to allow users to select services in the form.
- Fixed regression with Booking Time field not working as expected with automatic resource allocation.

## 1.0-alpha-3.6 | October 9, 2025

- Added new `wp gp-bookings booking list` and `wp gp-bookings booking get` subcommands.
- Fixed issues with quantity fields linked to Booking fields not validating correctly or having prices calculate as expected.
- Added `--create-pages` and `--skip-bookings` parameters to `wp gp-bookings seed` command.
- Fixed `wp gp-bookings seed` command to prevent re-adding management page.
- Updated Booking fields in entries list to provide link to view bookings directly in the GP Bookings Dashboard.
- Updated Buffer Settings to have time unit selector for improved usability.
- Updated "Booking" field to show under "Advanced" fields under "Add Fields" in the Form Editor.
- Updated Booking Time field to respect the "Week Starts On" WordPress setting.
- Added "All", "Weekdays", and "Weekend" convenience buttons to the days of week selector in Availability Windows and Days of Week pricing condition.
- Added message to "Services" tab for resources if the resource has not been associated with any services.
- Updated help text for "Reschedule Deadline" and "Cancel Deadline" service settings.
- Fixed issue where when creating a new view in the dashboard, the new view would be blank until refreshing.
- Updated Availability Windows, Time Range Pricing conditions, and ICS imports to use the configured time format in WordPress.

## 1.0-alpha-3.5 | October 2, 2025

- Improved styling of Booking Time field. It now utilizes more variables from the Gravity Forms Theme Framework.
- Fixed regression with field UI not functioning as expected in the form editor.
- Removed Booking Notifications metabox for entries.
- Updated Availability Windows to show as green to match Unavailability Windows showing as red when editing Services and Resources.

## 1.0-alpha-3.4 | October 2, 2025

- Fixed issue where the `wp gp-bookings reset` WP-CLI command did not work unless the `--everything` flag was used.
- Updated Services and Resources to default to a randomly generated color instead of white.
- Improved Dashboard by adding new List tab, filters, and the ability to create custom views.
- Removed unused "Resource Driven Booking" setting for Booking Time fields.
- Updated text in setup wizard.
- Fixed issue where "Full day" bookings would cause calendar dates to become unavailable no matter the capacity.
- Added [`gpb_ics_event`](https://gravitywiz.com/documentation/gpb_ics_event) PHP filter hook for modify the `VEVENT`'s in ICS feeds.
- Added new "Starting Month" setting to Booking Time fields and change default behavior from "Current month" to "First month with availability window."
- Added message to the "Bookings Notifications" meta box if there aren't any GP Bookings-related notifications configured for a form.
- Improved handling of single-day services (full day block size, no flexible booking duration). The date picker no longer will show a range, validation will no longer show an error, and the saved value for the Booking Time field will be a single date rather than a range.
- Fixed Booking Time field not using the "Time Format" configured in Settings » General.

## 1.0-alpha-3.3 | September 23, 2025

- Fixed an issue where the `gpb_availability_days` filter was not being applied to the frontend calendar.
- Fixed conditional logic not working with Booking fields.

## 1.0-alpha-3.2 | September 17, 2025

- Added duration and date modifiers to Booking Time field merge tags. New modifiers include `:duration[nights/days/hours/minutes]` and `:startDate`/`:endDate` with custom formatting support. The duration merge tags can be used in calculation formulas.
- Fixed an issue where the frontend calendar was not displaying correctly on mobile devices due to theme conflicts.
- Added support for adding multiple resource fields to a Booking field. Additionally, Resource fields now work with conditional logic.
- Fixed additional situation with date picker and nightly bookings where dates would be disabled incorrectly after having a start date selected.
- Fixed an issue where having custom block sizes (e.g. 75 minutes) could cause valid booking times to be rejected.
- Updated form editor behavior to prevent duplicating GP Bookings fields.
- Fixed issue where buffer settings could not be set to 0 after previously setting to a value greater than 0. Additionally, buffers now support 5 minute increments.

## 1.0-alpha-3.1 | September 10, 2025

- Fixed block size setting for Services to allow durations less than 15 minutes.
- Fixed ICS parsing errors by implementing forgiving parsing options for Google Calendar and other external ICS feeds.
- Improved behavior of the date picker in the Booking Time field, particularly for nightly and date range bookings.
- Improved nightly availability.

## 1.0-alpha-3.0 | September 3, 2025

- Fixed issue where end time of full-day bookings would be one day less than what was selected.
- Fixed full-day booking end times for non-nightly services.
- Fixed an issue where datepicker showed incorrect day count for full-day bookings.
- Fixed an issue where full day bookings could not be rescheduled due to datetime format validation errors.
- Fixed validation errors if using block sizes >60 minutes (but less than 24 hours).
- Fixed issues with multiple Booking fields in a form: pricing not calculating correctly, bookings not persisting.
- Refactored pricing rules into a more flexible (and simple) system. Additional improvements include proportional application of rules (e.g. only change price for designated time in rules) and pricing breakdown UI tweaks.

## 1.0-alpha-2.8 | August 27, 2025

- Fixed an issue where the booking management interface would not display standalone service bookings.
- Fixed an issue where date range end dates were being reduced by one day for full-day bookings.
- Fixed `wp_set_script_translations()` calls preventing translating of certain strings.

## 1.0-alpha-2.7 | August 20, 2025

- Fixed issue where rescheduling bookings did not update the value of their associated Booking Time fields.
- Fixed an issue where booking confirmed notifications were not sent for bookings created with default confirmed status.

## 1.0-alpha-2.6 | August 13, 2025

- Fixed styling of Booking Time field where the calendar could inherit padding from other CSS and display incorrectly.
- Updated `@since` for hook DocBlocks.
- Fixed issue where GP Booking's entry meta boxes were showing on any entry, even if the form did not have any Booking fields.
- Fixed issue where "Booking Information" entry meta box wasn't showing.

## 1.0-alpha-2.5 | August 6, 2025

- Added validation to Availability Block form to prevent End times that are before Start times.
- Added validation to Availability Windows when editing in Local time to catch Start/End times that wrap to the next day.
- Fixed margin on Timezone Toggle inside Availability Windows causing the Add Window button to be oversized.
- Fixed issue where Availability Window editor would not allow time-only windows.

## 1.0-alpha-2.4 | July 30, 2025

- Updated date picker in the Booking Time field to allow booking into two years into the future.
- Fixed issue where Resources could not be selected in the Form Editor for Resource fields when "Allocation Mode" is set to "Fixed."
- Improved logic around detecting which days are available/unavailable if using "Treat as Nights."
- Fixed "Booking Created" notification event not working.
- Updated entry deletion behavior to delete related bookings.
- Fixed a regression with rescheduling no longer working in the Manage Booking page.
- Added uninstall logic that can be used when removing GP Bookings with Spellbook.
- Internationalized Resource and Service metabox tab names.
- Added new "Pricing" settings to Services and Resources.
- Fixed issue with status transitions not being idempotent and throwing errors if used with a gateway.
- Fixed regression with ICS sync scheduler causing scheduled actions to fail.

## 1.0-alpha-2.3 | July 9, 2025

- Improved behavior of ICS import form when importing valid calendars with no events.
- Updated timeout to be longer when syncing calendars from ICS URLs. It now defaults to 30 seconds and can be filtered with `gp_bookings_ics_sync_timeout`.
- Fixed issue with flexible duration minimum settings not being respected on initial load.
- Added "1 hour" and "2 hours" increments to flexible interval choices.
- Improved timezone handling in Booking Time field.
- Improved Availability Window list and editor to reduce some confusion concerning timezones.
- Fixed service booking double-counting in some situations.
- Fixed a compatibility issue with GF Paypal Checkout Add-On.

## 1.0-alpha-2.2 | July 2, 2025

- Fixed an issue where payment status settings were not persisting after save.

## 1.0-alpha-2.1 | June 18, 2025

- Fixed all-day availability blocks causing errors if using block sizes less than 24 hours.

## 1.0-alpha-2.0 | June 18th, 2025

- **New Feature**: ICS Calendar Sync - Import availability from external calendars (Google Calendar, Outlook, etc.) with automatic syncing and conflict detection. Includes manual sync options and comprehensive logging.
- **New Feature**: ICS Feed Generation - Generate calendar feeds that others can subscribe to, with secure token-based URLs for sharing booking availability.
- **New Feature**: Frontend Booking Management - Customers can now manage their bookings via `[gpb_manage]` shortcode with secure key-based access for cancellations and rescheduling. You can then create private links for customers to manage bookings in notifications with the new `{gpb_manage_booking_url}` merge tag.
- **New Feature**: Buffer Management - Configure buffer time before and after bookings to prevent back-to-back scheduling conflicts. Buffers intelligently overlap with existing unavailability blocks.
- Services: Major overhaul of settings UI with new tabbed interface and improved meta box architecture for better organization.
- Resources: Complete overhaul of resource selector with ability to add new resource types and resources inline, plus improved placeholders.
- Dashboard: Improved availability preview integration and reduced duplicate REST API requests for better performance.
- Availability: Improved block size editor by removing 2-hour and half-day options.
- Developer: Added convenience functions (`gpb_delete_entry_bookings`, `gpb_get_entry_bookings`, etc.) for easier booking management.
- Developer: Refactored database table names.
- Bug Fix: Fixed issue where field ordering (service, resource, booking time) could prevent resource bookings from being created.
- Bug Fix: Fixed issue with entry statuses becoming inconsistent when saving global settings.
- Bug Fix: Resolved issue where deleting the last Resource Type was not possible.
- Bug Fix: Improved flexible duration input behavior to prevent weird typing experiences.
- Bug Fix: Fixed seeding errors and improved error handling throughout.
- Misc: Extensive UI polish, styling improvements, and code organization enhancements.

## 1.0-alpha-1.1 | April 7th, 2025

- Bug Fix: Resolved issue where GP Bookings would fatal error if not on PHP 8 or newer. It now has minimum requirements
  properly set along with checks in place to prevent auto-loading.
- Services: Introduced flexible booking durations and overhaul Duration Settings section as a result of this. Note, overnight
  bookings no longer default as flexible.
- Dashboard: Removed Entry IDs from event names.
- Dashboard: Added availability preview in Calendar view (was previously available for Resource Calendar) when rescheduling.
- Dashboard: Reduced duplicate REST requests to improve loading speed.
- Booking Time Field: Improved HTTP request efficiency and loading states.
- Booking Time Field: Fixed issue where the field settings were not displaying which meant that you could not set the
  Time Slot Mode.
- Misc: Code linting and style fixes.

## 1.0-alpha-1.0

- Hello World!