Dirigible Booking changelog

Latest release: 0.1.22, 2026-10-24.

0.1.22 2026-10-24

Fixed

  • No overbooking when a hold runs out at the last moment. Extending a hold in the cart, placing the order and confirming the payment now check, at the moment of writing, that the hold still counts. Before, a hold that ran out in the split second between that check and the write could be extended or confirmed after someone else had booked its spot, so the session went over. Now the booking takes its spot again only if there's room; otherwise it leaves the cart, or a paid order goes On hold with the "session filled" note and emails.
  • Cart total after a booking leaves the cart. When a booking's hold ran out and its session filled up, the cart removed the booking with a note, but the block cart's total still included its price until the next change. The total now matches what's left in the cart.
  • Restoring a trashed order brings its bookings back on shops that store orders as posts (HPOS off). The order went back to Processing, but its bookings stayed cancelled and their spots could be sold again. They're confirmed again if the session has room; if not, the order goes On hold with the usual "session filled" note and emails.
  • Booking form counts spots, not tickets. A ticket that uses several spots (a family ticket worth 4) could be picked when fewer were left, and the booking was then refused at Book now. Tickets that use no spots (spectators) were blocked once the spots ran out, though the booking would have gone through. The + buttons now follow the spots left.
  • Order screen: booking lines no longer show an internal "_ds_bookable_id" line to staff.
  • Order editor: adding a booking's product to an order is refused with a pointer to Bookings → Schedule (Add booking). It used to add a $0 line with no date and no spot taken.
  • Download CSV no longer writes a PHP 8.4+ deprecation warning to the error log for every row.

0.1.21 2026-10-23

Fixed

  • Bookable editor: the preview no longer logs a WordPress 6.9 deprecation warning ("getMedia is deprecated") in the browser console.

0.1.20 2026-10-22

Changed

  • Bookings have their own categories. Bookings → Categories (and a Categories panel on each bookable, plus a column in All Bookables) replaces the Product categories checklist added to Tickets in 0.1.19. With WooCommerce, each booking category is also a product category: a new one creates a matching product category, renaming or moving it changes that one too, and a paid bookable's product gets its categories, for WooCommerce reports and coupons limited to a category. A booking category with the same slug as an existing shop category shares it and never renames it. Deleting a booking category leaves the product category in place. Product categories set by hand on a booking's product in WooCommerce stay until the bookable gets a category.

0.1.19 2026-10-22

Added

  • Product categories (Tickets, paid bookings): pick WooCommerce product categories on the bookable and they're copied to its WooCommerce product, for reports and coupons limited to a category, without opening WooCommerce. The booking stays hidden from the shop. Categories already set on the product in WooCommerce are kept until you set them here. Shown to people who can assign product categories in WooCommerce.
  • Shop category lists skip categories with nothing to show. Lists that hide empty categories (like the Product Categories block) now also hide a category whose products are all hidden, such as one holding only bookings. Before, it showed with "(0)" and led to an empty page. Admin screens are unchanged.

0.1.18 2026-10-22

Added

  • Note for people who book (Booking Form): text sent with every confirmation, such as what to bring, where to check in or your refund policy. For paid bookings it's the WooCommerce purchase note, so it appears on the order page after checkout, in the processing and completed order emails and in My Account. Free reservations get it in the confirmation email and on the page after booking. Plain text: line breaks are kept and web addresses become links.

Fixed

  • Text in square brackets in a bookable's settings (waiver, ticket and extra names, the new note) no longer disappears from the booking form. WordPress treated it as a shortcode.

0.1.17 2026-10-21

Changed

  • Booking limits count bookings, not tries. A Book now that doesn't get a spot (the session just filled or closed) no longer uses up the visitor's hourly limit, for paid bookings and free reservations. With Turnstile on, one connection can hold and add more (8x and 20x the largest booking instead of 4x and 6x), so families on one campus, office or venue Wi-Fi network aren't turned away.
  • Bookings → Schedule says when the booking form turned people away in the last week because one connection booked a lot, and the site report counts it per reason.

Fixed

  • A booking in the cart is no longer removed at checkout when Stop booking passes while the customer is paying: it keeps its spot until its 15-minute hold runs out (it just isn't renewed past Stop booking).
  • Download CSV includes every booking in the range; it stopped at 5,000 rows before. The Schedule says when a range has more than the 5,000 it shows.
  • The site report shows how visitors' addresses reach the booking limits on the host (yes/no facts only), to confirm the limits see each visitor rather than one shared proxy.

0.1.16 2026-10-21

Added

  • Booking form says when a limit is reached. When someone picks the most tickets one booking allows, a note under Tickets says so ("That's the most tickets in one booking (20).", or "That's all the spots left at this time." when the session is nearly full), and an extra at its limit shows "That's the most per booking (20)." The note stays while they're at the limit and goes away when they remove one. Screen readers hear it once, and keyboard users stay on the row's − button instead of losing their place.

0.1.15 2026-10-21

Added

  • Timezone reminder. When the site's timezone is a UTC offset (like UTC−6) instead of a city, Sessions & Hours and Bookings → Schedule explain that it won't follow daylight saving, so session times would be an hour off for part of the year, and suggest picking your city. Administrators get a link to Settings → General → Timezone; other staff are asked to tell a site administrator. New WordPress sites start on UTC+0, so they show it too until a city is set.

0.1.14 2026-10-21

Changed

  • Date fields use the WordPress calendar. Season opens / closes and the From / To dates under Closed Days & Special Hours are now a button showing the date in words (for example "Sun, Nov 1, 2026") that opens the same calendar as a post's publish date. Safari's own date field showed today's date in grey when empty, so it looked set when it wasn't. To can't be set before From, and To and the season dates have a Clear link. Saved dates are unchanged.
  • Booking total shows $0.00 until tickets are picked (paid bookings). It said Free before anything was chosen; Free now shows only when the chosen tickets really cost nothing, like a free spectator ticket.

0.1.13 2026-10-21

Changed

  • Closed Days & Special Hours: rows without a date are flagged. A row whose From date isn't picked has never been used or saved, but nothing said so; in Safari an empty date field even shows today's date in grey, so it looks set. The row now shows "Pick a From date", and the Booking Form preview and the sidebar say how many rows have no date.

0.1.12 2026-10-21

Added

  • Overlapping sessions (Sessions & Hours): sessions can start every few minutes instead of back to back, so people can arrive at different times, as for public skating. For example, hours of 12:00–3:30 with 2-hour sessions starting every 30 minutes offer 12:00, 12:30, 1:00 and 1:30. Spots become Spots at the same time: everyone booked at the same moment counts, whichever time they started, and a group's spots free up once its session has ended. The Schedule shows each session's busiest time. Off by default.

Changed

  • Spots taken are now counted from each booking's own start and end time. Back-to-back bookables are unchanged, but bookings made before you changed the session length or hours now still count against the sessions they overlap, so those changes can no longer overbook a session.

0.1.11 2026-10-20

Added

  • Waiver checkbox text: under Booking Form → Waiver, Checkbox text changes the wording people tick to agree (for example "I agree to the waiver and the rink rules"). Leave it empty for the default "I have read and agree to the waiver." A signed waiver records which wording was agreed to.

Changed

  • Booking Form preview: Extras are easier to find. The preview now shows an Extras section with its Edit Extras button even before you add one (before, a bookable with no extras could only add them from the sidebar). Visitors still see the section only once there's an extra.
  • Questions → One choice / Several choices on paid bookables now says that answers don't change the price, and points to Extras for options with a price (and how many of each).

0.1.10 2026-10-20

Fixed

  • Paid bookings work again when one ticket takes several spots. A bookable with a ticket worth more than a few spots (a lane for six skaters, a party room) and a low Most tickets in one booking refused every paid booking with "You already have as many bookings waiting for payment…". The booking limits now count the largest booking a customer can make, so a single booking always fits. Free reservations get the same fix. Bookables whose tickets take one spot each are unchanged.

0.1.9 2026-10-15

Security

  • Paid bookings can no longer be filled by a script that never pays. Adding a booking to the cart holds real spots, so the limits now count spots, not requests: one connection can hold at most four bookings' worth of unpaid spots on a bookable at a time (four times Most tickets in one booking), and add at most six bookings' worth an hour. When the site has Turnstile keys (Simple Cloudflare Turnstile plugin), Book now on paid bookings must pass the security check too, as free reservations already do (without keys there's no check). Customers booking normally won't notice the limits.
  • The booking limits are now counted reliably when many requests arrive at once (before, a burst of parallel requests could all pass a limit together).
  • Manage your booking links stop working 30 days after the session ends, so an old confirmation that gets forwarded no longer opens the booking. Links for upcoming bookings keep working, and change and cancel cut-offs are unchanged.
  • Calendar files (.ics) and Add to Google Calendar events no longer carry the private manage link, since calendars are often shared. The link stays in the confirmation email.

Fixed

  • A booking whose cart hold ran out is only held again if it still fits within the connection's limit; otherwise it leaves the cart with a note asking to book again.

0.1.8 2026-10-14

Changed

  • Booking Form, Two columns layout: the block now uses Wide width, so the form and the summary have room side by side. Switching to Two columns sets the block to Wide (Full stays Full), and switching back to Stacked returns it to normal width. Booking forms already set to Two columns at normal width show Wide too.

0.1.7 2026-10-09

Added

  • My account → Bookings (with WooCommerce): customers see their upcoming bookings (soonest first) and past ones (10 at a time), each with the date and time, tickets and extras, status, order number, until when they can change it online, and a Manage button to the booking's page. Paid bookings show for orders placed while logged in; a free reservation joins the account when its owner, logged in, opens the emailed Manage your booking link and presses Save to my account (never by matching the email, and never for staff). The tab appears once the site has a published bookable or any bookings, and stays off while WooCommerce Bookings is active, which has its own.

0.1.6 2026-10-09

Upgrade notice

  • Customers can now cancel and reschedule their own bookings from the link in their confirmation email, up to 24 hours before (free reservations: until the start). Paid cancellations default to staff decide — nothing is refunded automatically. Change this per bookable under Changes & Cancellations.

Added

  • Manage your booking: every confirmation (the free reservation email, and WooCommerce's order emails to the customer, order confirmation page and My account order view) links to a private page for that booking. It shows the date, time, tickets, extras, status and order number, offers Add to calendar (.ics) and Add to Google Calendar, and has a QR code to open it on another device. Cancel links in older confirmations open this page.
  • People can move their booking to another session of the same bookable (same tickets and price, only if the new session has room) or cancel it themselves, up to a cut-off you set. The page says the exact time changes close, and after that shows how to contact you. You and the customer get an email for every change; paid bookings also get an order note, and a move updates the date and time on the order line.
  • Booking → Changes & Cancellations (per bookable): Let people change or cancel online (on by default), Changes close (24 hours before a session by default; free reservations can still be cancelled up to the start), and for paid bookings what a cancellation does: free the spot and let staff decide about a refund (default), no refund (said before people confirm), or refund in full when the payment method supports refunds.
  • Bookings → Schedule has buttons for each session in the Day view. Close session stops new bookings for that one session (it disappears from the booking form) while existing bookings stay; closing a session that has bookings shows how many and asks whether to keep them or cancel them and email everyone. Reopen session takes it back. Both can carry a note for staff.
  • Change spots sets how many spots one session has, higher or lower than usual. Bookings stop at the new number, even when many people book at once.
  • Add booking for walk-ins and phone bookings: tickets, extras, and optionally name, email, phone, waiver signature and a note, with Checked in now. A full session needs Overbook ticked, and overbooked bookings are marked with who added them. No payment is taken: take payment at the desk.
  • Email everyone in a session, with Also cancel these bookings: write a message, review how many emails go out and how many bookings are cancelled, then send. Large sessions are emailed in batches. Cancelled paid bookings get an order note and are never refunded automatically: you get a list of the orders to refund in WooCommerce.
  • No-show for people who didn't come, once a session has started. No-shows keep their spot; Undo takes it back.
  • Session headings show how many people have arrived. The CSV has No-show, Source (paid online, free reservation or added by staff) and Note columns.

Changed

  • Bookings → Schedule loads with the same few database queries however many bookables a site has.

Fixed

  • Cancelling a paid booking under a Full refund policy no longer refunds automatically when the order already has a refund, and never refunds into money for another booking on the same order (so the order can't flip to Refunded and cancel that booking). Staff decide instead.
  • The manage-booking page is never kept by the website's cache: the emailed link opens the page through a private cookie, and the address shown afterwards has no secret in it (so analytics don't record it either).
  • An "Email everyone" sent twice by a double click goes out once; a send that finds the mail queue busy retries a minute later.
  • A paid booking cancelled from the Schedule no longer comes back when its order's status changes later.

0.1.5 2026-10-09

Added

  • Booking Form block: a Two columns layout puts the form beside the bookable's featured image, excerpt, a Details text you type on the page, and a Booking summary that shows the chosen time, tickets, extras and total with the Book now button, staying in view as people scroll. Choose which side the form goes on, and whether to show the image and excerpt. New bookables start with it, at Wide width. On phones it stacks: details, form, then the summary.
  • The form says which timezone times are in ("Times are shown in CDT."), and a day with nothing open says "No availability until …" with the next open time.
  • The Booking panel in the bookable's sidebar stays open.

0.1.4 2026-10-09

Added

  • Pause bookings: a switch at the top of the Booking panel (and Pause / Resume bookings in the Bookings list) stops new bookings without unpublishing the page. The form shows a message you can change; existing bookings and checkouts already in progress are unaffected.

0.1.3 2026-10-09

Added

  • Extras have a type: Quantity (as before) or Choice, where each option has its own price and people pick one option, several, or how many of each (for example sizes).
  • Questions can be a short or long answer, or one or several choices from a list.

0.1.2 2026-10-09

Added

  • Next available: a fully booked day stays visible (crossed out) and offers the next open time in one tap; a Next available link beside Date jumps back to the soonest opening.
  • In the editor, the Booking Form block is a live preview of the form built from the bookable's settings, with an Edit button on each part. The sidebar's settings are now one Booking panel: a summary line per part, each opening its settings in a larger window.

Changed

  • On phones, the Calendar date display shows as the date row.
  • The waiver is off until Add a waiver is switched on.
  • Example text in the settings is no longer specific to one kind of venue.
  • The Schedule's Week and Day views load paid bookings' customer details in one go, so busy weeks open faster.

0.1.1 2026-10-09

Added

  • Bookings → Schedule has Day and Week views and an All bookables choice. Week shows each bookable's people for the week, then every booking day by day. Download CSV covers what's on screen, and Print prints a clean list for the front desk.
  • Links and bookmarks to the theme's old WooCommerce Bookings pages ("Today's Bookings", "Weekly Bookings") open the matching Schedule view.
  • Booking Form block: a Dates setting shows the dates as a scrolling Row (as before) or a month Calendar.

Changed

  • The Dirigible theme's Manager and Shop Assistant roles can open the Schedule, check people in and cancel bookings, as they could with WooCommerce Bookings. Checking in no longer needs permission to edit the bookable.

Fixed

  • Shop Assistants keep Schedule access after a plugin or theme update (the theme's role update no longer removes it).
  • Only confirmed bookings can be checked in.

0.1.0 2026-10-09

Added

  • Bookings: a new Bookings section for things people book by the session, like public skate, rink time or firepit rentals. Set weekly hours, session length, spots per session, ticket types, closed days and special hours, a booking window and a season.
  • Booking Form block: visitors pick a date, a time (with spots left, always current on cached pages), tickets and extras, answer your questions and sign a waiver.
  • Paid bookings check out through WooCommerce; the booking's date, time, tickets and answers show on the order and in WooCommerce's emails. Spots are held while people check out and given back when an order is cancelled or refunded.
  • Free reservations (or sites without WooCommerce): visitors reserve with their name and email and get a confirmation with a cancel link; staff get a notice. Protected by a hidden trap field, rate limits and Cloudflare Turnstile when the site has it.
  • Bookings → Schedule: who's coming to each session, check-in, and a CSV download.

Built by Dirigible Studio. Get in touch