Release 2026-09-02
This release introduces the Venues feature stream with full booking location integration, expands booking lifecycle controls, delivers Booking Widgets, and includes minor Guest App improvements and Configuration Service enhancements.
Enforce booking type selection in Organisation Settings
Added the ability within Organisation Settings > Booking Types to enforce that a booking type is selected when creating a new booking. (ELEV-225)
Booking Lifecycle owner assignment controls
Added controls to Organisation Settings > Bookings > Booking Lifecycle to control requirement for: booking owner must be assigned when a new booking is created, booking owner must be assigned before a booking is confirmed. All required fields are now noted with a red asterisk.
Conditional rendering of Organisation Settings sections by feature stream
Added support for rendering settings sections/panels conditionally depending on the organisation's feature stream.
Venues tab in Organisation Settings
Added the 'Venues' tab to the organisation settings page, which shows only for Venue organisations.
Venues feature stream — core CRUD
The Venues feature stream is officially in development. This update ships the ability to create, retrieve and update venues, the ability to create bookable spaces within venues, and a number of REST API endpoints required for manipulating the data that goes into Venues and Venue spaces.
Venues — Booking Location Integration (ELEV-275)
Work completed on 2026-08-12 wiring the Venues feature stream into the Bookings module, enabling bookings to be allocated to venue spaces with real-time availability checking. Covers ELEV-275.
VenueSelector Component
New VenueSelector component provides a two-stage venue to space picker with integrated availability checking. Accepts availabilityTimes: { start, end } (both nullable) — the space picker is disabled with an explanatory hint when a start or end time is missing. Props spaceId and allocationId allow pre-population from an existing booking location; async-loaded values are synced via useEffect without causing re-check loops (stable useRef callback pattern). AvailabilityBadge provides a colour-coded pill (green/red/amber) showing availability state for the selected time window. AllocationBadge is shown when an allocation already exists for the space, indicating the space is booked. onAvailabilityChange callback lets parent components gate save actions on space availability.
Venue Space Allocation Service and API
New VenueSpaceAllocationService handles all allocation logic including: listAllocationsForSpace (returns conflicting allocations for a time window with optional entityType/entityId filter), checkSpaceAvailability (delegates to the check_venue_space_availability Postgres RPC with excludeAllocationId support for edit scenarios), addAllocation (availability-checked insert that sets bookingId automatically when entityType === 'booking'), getAllocation (fetches a single allocation by ID and returns NOT_FOUND on PGRST116), and syncAllocationsForLocationChange (orchestrates cancelling the old allocation and creating a new tentative one when a booking's location mode changes to/from Venue). New REST API endpoints: GET /api/v1/organisations/{orgId}/venues/{venueId}/spaces/{spaceId}/allocations?from=&to= to list allocations overlapping a time window; POST /api/v1/organisations/{orgId}/venues/{venueId}/spaces/{spaceId}/allocations to create a new allocation (polymorphic: entityType + entityId); GET /api/v1/organisations/{orgId}/venues/{venueId}/spaces/{spaceId}/allocations/{allocationId} to retrieve a single allocation. All allocation endpoints require ViewBookings or ManageBookings permission plus the RoomVenue feature stream. Allocation schema is polymorphic: entityType: 'booking' | 'event' + entityId: uuid (with bookingId maintained for backwards compatibility).
Booking Widgets — Full end-to-end implementation
Full end-to-end implementation of the Booking Widgets feature.
Document Vault sharing module theming fix in Guest App
Document Vault sharing module in the Guest App now supports correct theming.
Minor Guest App layout tweaks
Minor layout tweaks including utilisation of viewport width in the title bar.
Organisation policies enforced on Create Booking Form
Organisation policies are now enforced when they are enabled via Organisation Settings. Technical changes were made to support the new version of the location picker, which includes support for Eleventh Venues for organisations who have the correct feature streams enabled.
Booking Location Tab — Full Overhaul
Redesigned BookingLocationTab with cleaner layout, pill-style mode buttons, and improved section structure. In view mode: displays venue and space name in the tab heading, renders a VenueInfoPanel with address, contact, capacity, space type, and a 'Booked since [date]' badge pulled from the allocation record. In edit mode: site contact and location notes fields are hidden when Venue mode is active (and cleared on mode switch); inline spinner during save; Revert button shown only when the form is dirty. VenueSelector is wired with spaceId and allocationId from the booking's saved location so the form pre-populates correctly even when booking data loads asynchronously. Fetches venue, space, and allocation data from the REST API on mount (allocation fetch is conditional on allocationId being set). The 'At an Eleventh Venue' option is now only shown when the organisation has the RoomVenue feature stream enabled.
Configuration Service auto-migration on ensureConfig()
Configuration Service now automatically upgrades the underlying data upon an ensureConfig() call where a MigrationFactory is provided. (Fixes ELEV-265)