Skip to main content

Changelog

All changes, new features and bug fixes

Version 1.4.4 (AUGUST 11, 2026)

Added The day view can be split into one column per active staff member, switched on in the gear menu next to the calendar. Dragging across a column blocks that period for that person immediately, with no dialog and nothing to fill in - the case this was built for is walk-in trade, where somebody standing at the counter has to be fitted in while they wait. Clicking a time instead of dragging opens a new appointment with that person and that time already filled in. A pair booking appears in both columns, a block that names nobody appears in every column. Off by default: an existing calendar looks and behaves exactly as it did until somebody turns this on, and month and week view are untouched either way. Blocking time this way keeps its safety net - a period that covers existing appointments still says so and names them.
Added A service can take its colour from its category instead of carrying one of its own. Setting up a new site meant picking a colour for every service by hand; now the category is the one place to change. The colour field stays visible and shows the colour that actually applies, and changing a category colour carries through to every service that inherits from it. Services that already exist keep their own colour - an update must never repaint a calendar somebody has arranged.
Added Both notification fields take several addresses now, separated by commas - the global one and the one on each location. Two people who both wanted to hear about new bookings needed a mailing list at the hosting provider until now. Worse, entering two addresses did not fail loudly: the field came out invalid as a whole and the mailer sent nothing at all, to nobody, without a word in the backend.
Added The button under the booking confirmation can be given its own wording and its own target, for example "Back to the home page". Left empty it stays what it was: "Book another appointment", starting a new booking.
Added The customer search finds phone numbers regardless of how they were typed. Numbers are stored as somebody wrote them - "+49 176 1234567", "0176/1234567" - so a plain search for "1761234567" matched none of them. Both sides are reduced to digits before comparing, which is what makes the common case work at all: the last four digits somebody reads out over the phone.
Changed Appointment reminders are no longer sent for bookings made inside the reminder window. Somebody booking at 12:00 for the same evening received their "reminder" a quarter of an hour later, right behind the confirmation. A reminder exists to bridge the gap between booking and appointment; where there is no gap, the confirmation has already said everything a reminder would. Reminders also go to confirmed appointments only - a request still waiting for manual approval could be reminded about before anyone had decided whether it would happen at all.
Changed Blocking time in the calendar asks before it writes anything when the period covers existing appointments, and names them. The warning used to arrive afterwards, when the block already existed and the panel had closed - whether a booking is moved, handed over or called off is a decision, and a decision has to be offered while it can still change the outcome.
Changed The day view names the weekday, not only the date, and the week view writes the month out in full where there is room for it. Which form is used follows the width the calendar actually has rather than a phone-or-not decision.
Changed The calendar's dates and week numbers are links. The title of the week view opens that day, the week number in the month view opens that week, and the day number in the month view opens that day - the route people took through the view switcher and the arrows, in one click.
Changed The help text under the category field says what actually happens. "Leave this empty and customers go straight to the service list" was true only while no category existed at all; as soon as one does, services without a category disappear from the booking form. Field descriptions in the service form are shown at full size and in proper contrast now, rather than as small grey print.
Removed The alias field is gone from the service form. Nothing ever read it - there are no SEF addresses for services - but duplicating a service copied it, and it then stayed attached to the renamed copy without any warning. The column and its stored values remain, in case addresses are built on them later.
Fixed Uninstalling the component no longer locks the operator out of their own backend. Joomla allows the component to be removed on its own while the JoomBook plugins stay behind, enabled. The system plugin runs on every backend request and reaches for classes that no longer exist, so the login screen itself ended in "Class ...\LicenseHelper not found" - and with no way in, there was no way to remove the rest either. Two changes: the plugins now check whether the component is still present before touching it, and uninstalling the component switches its own plugins off first. Reported by a customer and reproduced locally.
Fixed Text a visitor types into the booking form can no longer become executable code in the backend. The hover card in the calendar assembled the appointment title, staff member, location and customer address into HTML without escaping them, so a customer whose surname contained markup ran script in the logged-in administrator's browser - merely pointing at the appointment was enough. The same applies to the clash warning that names customers; it is escaped at its source now.
Fixed The permission tab was missing Create, Edit and Delete. The code has always checked those three - which is what a receptionist or a branch manager needs in order to enter anything at all - but they were never declared, so there was no row to set them on.
Fixed The location's notification address was never drawn on the screen. The field existed, was saved and was read when notifications went out, but the location form did not render it, so it could only ever be filled in through the database.
Fixed Blocking time for everybody no longer passes over existing appointments in silence. A block naming one staff member has warned about clashes since 1.4.0, but a block covering the whole shop - the more sweeping of the two - checked nothing at all.
Fixed Saving a service with no staff assigned now asks first. Such a service never appears in the booking form, because the form only offers what somebody can actually perform, and the operator left the screen believing it was live.
Fixed Saving an appointment for a customer with no e-mail address no longer stops with nothing to see. The question "notify the customer by e-mail?" was still asked for those customers, although there is nothing to decide, and until it was answered the save did not proceed.
Fixed Anything that stops a save now scrolls itself into view. The panel body scrolls while the button bar stays fixed at the bottom, so on a long form the message sat off screen and pressing Save looked like it did nothing at all.
Fixed "Choose date" no longer closes as soon as the month is changed. Moving to the next month counts as a change to the field, and the picker took that as the date having been chosen - so it shut on the way to the day somebody actually wanted, always on the same day number. The calendar toolbar also no longer breaks into two rows over a long month name, and several tooltips that came from the calendar library itself are translated.

Version 1.4.2 (AUGUST 7, 2026)

Fixed Imported appointments could end up on the wrong customer. A customer whose e-mail address was already on file failed the import - the address is unique - and so got no entry in the table that translates package numbers into real database IDs. The appointment kept its number from the package, and that number pointed at whichever customer happened to hold that ID. Nothing warned about it: the rejected customers were listed as errors, but the appointments were reported as imported, and they were - on the wrong people. A customer who is already present is now recognised by their address and linked instead of rejected.
Fixed Imported records no longer arrive carrying the date of the import. Every row was stamped with today instead of the day it was actually made, so an imported history stopped being a history - a customer of eight years looked like a new one. The check that keeps database-generated columns out of an insert was also catching ordinary columns that merely have a default value, and the creation date is one of them.
Fixed A row whose reference cannot be translated is skipped and reported now, instead of keeping its old number and attaching itself to an unrelated record.

Version 1.4.1 (AUGUST 7, 2026)

Added A block can be edited, not only created and deleted. Clicking one in the calendar now offers Edit as well, and it opens in the same panel it was created in, with its period, times, location and label filled in. It stays the same block - editing never leaves a second one behind.
Added The calendar can leave out weekdays the business is closed on. A business closed Sundays and Mondays goes from seven columns to five, and the remaining ones grow by roughly forty per cent. Off by default. A day carrying an appointment never disappears.
Changed Every JoomBook screen carries its own area navigation. With Joomla's sidebar collapsed, switching area meant expanding it again. A menu button now sits at the far right of the toolbar row, or as a full-width bar where Joomla hides that row. It shows only the areas the user is allowed to open.
Changed A refusal now says why the staff member cannot take the appointment. One message covered six different situations; it names the case instead, and where a time settles it, the time - "busy until 16:15 - buffer times of the adjoining appointments included".
Changed The calendar toolbar no longer overlaps itself on narrow screens. Below 920 pixels of calendar width it switches to a compact arrangement: title on its own line, today and date picker below it, view switcher under that, an arrow on each side. Measured on the calendar, not the window.
Changed The calendar's previous/next arrows sit left and right of the date now, drawn as outlines rather than filled blocks, and they keep their place while clicking through a year. The view switcher gained hairline dividers between Month, Week and Day.
Changed Location and staff filter sit on one line, both as dropdowns. The location filter disappears entirely where an installation has only one location.
Changed The "Options" button moved from Locations and Pricing rules to the dashboard and is now called "Permissions & Options". The dashboard's Quick Links tiles are gone - the area navigation covers all eight areas from every screen.
Fixed An existing appointment now blocks exactly its own time. The availability check measured a booked appointment by the length of the service being checked, so the same gap was free or taken depending on what somebody wanted to book into it - and a shorter service could be placed into an appointment still running.
Fixed Booking over a block that applies to one staff member now asks first. A block covering hours rather than a whole day fell between two checks, and the appointment was created without a word.
Fixed The calendar now fills the width it is given after Joomla's sidebar is collapsed or expanded. The toggle changes the container width without a window resize, so the grid kept its old width and left a gap on the right.
Fixed The week title no longer drops the dot after the first day number in German ("23. - 27. Nov. 2026"). The range is now shortened by the browser's own date formatting, which gets it right in every language.
Fixed A pair appointment splits the leading colour strip the same way as the main bar when both are coloured by staff. The strip was painted as a shadow, and a shadow only knows one colour.
Fixed The calendar no longer flickered in week view with closed days hidden, and an appointment saved on a hidden day brings its day back straight away.

Version 1.4.0 (AUGUST 6, 2026)

Added Confirm booking by email (double opt-in). A booking first goes out as a request; only the customer's click on the link turns it into an appointment. The slot is held meanwhile and released automatically once the deadline passes.
Added Data protection: personal data of customers who have not had an appointment for a chosen period is anonymised automatically. Appointments are kept, so statistics stay correct. The settings page shows how many records a run would affect right now.
Added The scheduled tasks JoomBook needs are created from the settings. Switching a feature on creates its task, switching it off suspends it again. A task the operator built themselves is never touched.
Added Quick block in the appointment calendar: a new tab closes a period for online booking in a few clicks, or drag across the week or day grid. Blocks appear as grey entries and are removed with a click.
Added First-time customers are marked in the calendar, the appointment list and the edit panel, so the paperwork a first visit needs can be prepared in advance. The appointment list gained a matching filter.
Added Optional salutation in the booking form. It asks how somebody wants to be addressed, not what they are, so the third choice is "No salutation" rather than a gender category. Hidden by default; in the backend it can always be recorded.
Added The cancellation button in customer emails can be switched off, for businesses that want cancellations to go through them. Links in mails already sent stop working too.
Added Two new switches on the customer record: "Existing customer", so migrated regulars are not greeted as new, and "Approve bookings manually" for customers whose bookings should never confirm themselves.
Added Published services that customers can never actually book now say so in the service list, and name which of the three possible reasons applies.
Added Blocking time from the calendar warns when the block covers appointments that already exist, and lists them instead of closing silently.
Added Hour-based closing periods are visible in the calendar at last, as a band over exactly those hours, with an explanation of where the period comes from.
Added Every time field in the location form and the block dialog can be typed into as well as picked from a list. "9" becomes 09:00, "930" becomes 09:30, and anything that is not a time is dropped rather than saved as nonsense.
Changed Every deadline and "has this already happened" check now goes by the timezone set in JoomBook rather than by whichever clock happened to be asked. On a server two hours out of step, a 60-minute confirmation deadline had already expired when the mail went out.
Changed A customer can be recorded without an email address, for bookings taken over the telephone. An address that is given still has to be real and still belongs to exactly one customer.
Changed Services and their categories are two tabs now. The order of services is set inside a category, where it is the only place it means anything.
Changed The appointment and service lists gained full filter bars: search, status, payment status, service, category, appointment type, duration, new customers and a date range.
Changed Confirming or cancelling several appointments at once now asks first, and offers to change them without notifying anybody. Five selected appointments used to send five emails with no warning.
Changed Staff working hours are set in half-hour steps. A therapist starting at 09:30 or a break from 12:30 could not be entered at all before.
Changed Booking into a closing period, a block or a staff absence from the backend now warns and offers "Save anyway" instead of being accepted in silence.
Changed Blocks and staff absences are entries in the calendar now, not background shading, so every one of them can be clicked and removed the same way.
Changed The location list dropped its postcode and timezone columns so the table fits on screen. Both values are unchanged in the location form.
Fixed The upgrade routine widened the appointment status list and then set it back to the old one further down, which left two statuses unusable on every upgraded installation.
Fixed The "waiting" appointment status was missing from the database on every installation that had not been set up from scratch with the current version.
Fixed Deleting appointments from the backend list left their entries behind in the staff member's Google calendar, and nobody on the waiting list was offered the freed slot.
Fixed The waiting list could offer a customer a slot on a day the staff member was away.
Fixed Pictures for categories and services stayed blank in the booking wizard whenever Joomla is installed in a subfolder rather than at the top level of a domain.
Fixed Two settings could not be reached at all, among them the switch for the double opt-in itself. A check that compares the settings forms against what the page actually renders now runs with the test suite.
Fixed "Discard and continue" in the unsaved-changes warning did not discard anything. The settings tabs are panes of one form, so switching between them left every edited field standing.
Fixed Sorting is remembered again in the service, appointment and pricing-rule lists. Once Joomla's page-length selector had been used, every click on a column heading was silently ignored.
Fixed The appointment list only ever named the primary staff member, so a pair booking looked like a mistake. List filters no longer survive leaving the list either, which used to hide appointments that were plainly there.
Fixed An absence of a few hours shaded the entire day, and removing a staff absence from the calendar did nothing at all.
Fixed Deleting every row under "Company holidays and closing days" left the section unusable, and the time list in the opening hours was too narrow and transparent to read.
Fixed "Apply first row to all days" in the staff working hours left the breaks behind.
Fixed The mails to staff and to the operator carried the site name as their footer while the mails to customers carried the location's address.
Fixed The backend lists no longer drop columns on a narrower screen, and the calendar no longer competes with itself: five hatch patterns in four colours are gone, and blocks are no longer painted in the appointment colours.
Fixed Several accessibility faults in the booking wizard: unlabelled waiting-list fields, keyboard focus indistinguishable from the current selection, focus lost at every step, and calendar days announced to screen readers as the raw stored date.
Fixed A changed stylesheet reached nobody who had visited the page before, because the asset version was never raised. It is stamped with the build from now on.
FixedOpening the booking view through a menu item ended in a fatal error, and the waiting-list endpoint accepted plain links instead of demanding a form submission.

Version 1.3.1 (JULY 25, 2026)

Fixed Saving a service that needs more staff than are available no longer produces an error page on a German installation. The message meant to explain the problem was not a valid format string, and PHP answers that with a fatal error rather than a warning. Only German was affected.
Fixed Three German texts closed a quotation with a straight quote instead of the typographic one, visible in the unsaved-changes dialog and in two service field descriptions.
Fixed All eight translation packs are up to date. Every text added since the packs were last touched is translated - the hour-based absences and closing periods, the conflict warnings, the calendar colours and legend, the "go to date" button and the "show more" control in the wizard.
Fixed The "appointment changed" email arrived in English in every language, including its greeting. Because the keys existed, nothing reported them as missing. All eight languages are translated now.
Fixed Swedish and Polish were written without the special characters of their own alphabets, throughout both packs, including the wizard buttons a customer sees first. Both are corrected.
Fixed The Thai pack had never been part of the language update mechanism, so a Thai installation was never offered a translation update at all. It now uses the same update mechanism as the other seven.
Changed Licensing metadata completed throughout: every shipped PHP file now carries the GPL licence header, the bundled copy of Alpine.js carries its MIT licence notice, and the package declares the language file Joomla expects. None of this changes how the extension behaves.

Version 1.3.0 (July 24, 2026)

Added Absences and closing periods can now cover a few hours instead of a whole day. A staff member away from 14:00 to 16:00 stays bookable in the morning, and a shop can close for two hours without losing the rest of the day. Leaving both times empty still means all day, so nothing entered so far has to be re-entered.
Added Absences and closing periods are no longer limited to three entries. A button below the table adds as many rows as needed - somebody with six physiotherapy appointments can enter all of them in advance - and each row has its own delete button.
Added Blocking off time now warns about appointments that already exist inside it, listing them with date, time and customer name. Four situations are covered: staff absence, location closing period, a single closed day, and shortened opening hours. Nothing is ever cancelled or moved automatically - the decision stays with you, but it is no longer made in ignorance.
Added The appointment calendar now shows when a location is closed and when a staff member is away. Closing days and holiday periods are shaded and labelled with the reason; time outside the opening hours is greyed out in day and week view. A legend explains every state, and each state carries a pattern as well as a colour so it does not depend on colour vision.
Added Configurable colour coding for the appointment calendar. Bars can be coloured by status, service, category, staff member or payment status, set independently for the main bar and the leading segment. The gear button above the calendar opens the settings right where they take effect.
Added Day and week view now start and end at the opening hours instead of always spanning midnight to midnight. Entries outside those hours stay visible - the range widens automatically for them. Switchable between "Opening hours" and "24 hours".
Added New "Go to date" button in the calendar toolbar. Reaching a day weeks or months away previously meant clicking the arrow over and over, which was painful in day view where every click moves a single day.
Added New setting "Allow booking outside opening hours" (off by default). With it off, appointments can no longer be created in the backend on a closing day, during a holiday period, outside the opening hours or while the staff member is absent - the attempt is rejected with a clear reason instead of being silently accepted.
Added New setting "Collapse long descriptions". Longer texts for services, categories and locations in the booking wizard are limited to about three lines with a "Show more" button, which keeps the selection lists easy to scan.
Added The JoomBook tile on the Joomla administrator dashboard is now part of the installation package and no longer has to be added by hand. A tile you have configured yourself is never touched, so your own position and publishing state survive every update.
Fixed A paid plan no longer falls back to Free on its own. The license is re-checked automatically once a day, so the cached status stays fresh. Previously it was only ever checked when an administrator clicked "Check license" by hand, and a site whose last manual check was longer ago silently dropped to Free and started applying Free limits. The offline grace period was also raised from 14 to 30 days.
Fixed A staff member picked by name is now checked before the appointment is written. Until now only the automatic assignment verified anything, so a booking with an explicitly chosen staff member reached the database unchecked - which allowed overlapping bookings, bookings during a holiday, and bookings with somebody who does not offer that service at that location.
Fixed A configured slot length is now the measure everywhere. With a 120-minute slot length and a 130-minute service, the slot list offered a time that saving then refused, and services longer than the slot length could not be booked at all near a break or the end of the working day. The duration shown to the customer still reflects how long the treatment really takes.
Fixed Closing days and closing periods of a location are now enforced wherever an appointment is created, not only in the booking wizard and the appointment panel.
Fixed A day on which the location is closed can no longer be clicked to start a new appointment. Previously the dialog opened, the whole form could be filled in, and the booking was only rejected on saving.
Fixed The "List / Calendar" switch can no longer slip out of view in the appointments list, and error messages in the appointment panel now scroll themselves into view instead of leaving you looking at a button that seems to do nothing.
Fixed Several smaller display faults: today is highlighted the same way in every calendar view, shading no longer bleeds into the weekday row, the empty "all-day" row above day and week view is gone, and two German setting headings that had been missing are translated.

Version 1.2.3 (July 16, 2026)

Added When an appointment is reassigned to a different staff member, the previous staff member now receives an email letting them know it has been reassigned and removed from their calendar, including who it is now assigned to.
Fixed The booking wizard now accounts for a sticky or fixed site header when scrolling between steps, so the wizard no longer slides underneath the header.

Version 1.2.2 (July 15, 2026)

Fixed The booking wizard now scrolls its top edge back into view when you move between steps, so it no longer stays off-screen after you have scrolled down a long service list.
Fixed The per-service "show duration" and "show price" options can now override the global setting (Use Global / Yes / No), instead of being forced off by the global switch.
Fixed The privacy-policy link in the booking wizard's consent text is now clearly recognizable as a link, with an underline that animates in on hover.
Fixed Deleting a service category no longer shows a "500" error, and the category is properly removed. Its services simply become uncategorized.
Fixed Saving an item in the Services, Locations, Customers or Staff lists no longer triggers the browser's "resend form data" warning.

Version 1.2.1 (June 16, 2026)

Fixed Notification emails are now sent in the customer's language when the matching JoomBook language pack is installed. Previously they were always English for every language except German and English.
Fixed The appointments list could get stuck on a status filter (for example "No-show") with no way to clear it. The list now shows the active status filter with a "Clear" button that removes it while keeping the location and staff filters.
Fixed Pricing-rule hints in the booking wizard (such as the "Happy Hour" banner) are now shown in the customer's current language instead of the site default.
Fixed The admin approve/decline confirmation page and the customer waitlist-confirmation page are now shown in the booking's language; previously they fell back to English for every language except German.

Version 1.2.0 (June 16, 2026)

Added One-click decline for pending booking requests, directly from the admin email. Declining sets the new "Rejected" status and sends the customer a friendly "appointment not possible" email (staff are not notified). The request email also shows the customer's email address and, for multi-location setups, the location.
Added New "Rejected" appointment status (distinct from "Cancelled"), with its own colour and badge throughout the backend; it can also be set manually in the appointment editor.
Added A "Save" button (save without closing) in the appointment and pricing-rule editors.
Fixed Couple (pair) massage: the wizard could offer a time where the second staff member was already busy, and that staff member could be lost when saving. Pair slots are now only offered when both staff members are genuinely free in parallel, and the server rejects an unavailable choice.
Fixed A service's before/after buffer time is now correctly respected when checking availability, so bookings can no longer overlap a neighbouring appointment's buffer.
Fixed In manual confirmation mode, the staff member and customer are notified only after an admin actually confirms the request; the wizard now shows a clear "pending review" hint.
Fixed Declining a request now works reliably (no more blank page) and the status is saved correctly.
Fixed Column headers in the Appointments, Services and Pricing Rules lists are now sortable (ascending/descending).
Fixed Marking an appointment as "No-show" or "Completed" no longer prompts for or sends customer/staff/admin emails - these are internal states.
Fixed Saving an appointment no longer triggers the browser "resend form data" warning.
Changed Rejected and cancelled appointments are now hidden from the calendar overview (still visible in the appointments list with their status).
Changed Clearer, more accessible status buttons in the appointment editor, and consistent editor footers: green "Save & Close" and "Save" on the left, "Cancel" on the right.

Version 1.1.0 (JUNE 15, 2026)

Added Staff absences can now be entered as a date range (start/end date), in addition to clicking individual days. Multi-day ranges block bookings automatically.
Added The absence calendar now matches the location closure calendar: localized month/day names plus Year, Month and Week views; vacation periods in blue, single absence days in red.
Changed The "Assigned Staff" field in the service editor is now clearer - staff are shown as distinct toggle buttons (green = assigned, grey = not assigned); a click toggles the assignment.
Changed Creating a new service now opens in the side panel - consistent with staff and locations - instead of a full-page form.
Removed The non-functional "Guests per Appointment" and "Group Capacity" fields were removed from the service editor to avoid confusion. Couple/duo booking remains fully available.
Fixed Deleting a service incorrectly showed an error message even though the service was removed. This has been corrected.
Docs The entire JoomBook documentation has been thoroughly revised, corrected and clarified.

Version 1.0.8 (JUNE 6, 2026)


Joomla! Logo
JoomBook is not affiliated with or endorsed by The Joomla! Project™ or Open Source Matters, Inc. The Joomla!® name and logo are registered trademarks of Open Source Matters, Inc. in the United States and other countries.

Copyright © · JoomBook