Files
wp-bnb/CHANGELOG.md
magdev 864b8b2869
All checks were successful
Create Release Package / build-release (push) Successful in 1m20s
Add frontend features with search, shortcodes, widgets, and blocks (v0.6.0)
- Room search with availability, capacity, room type, amenity, price range, and building filters
- AJAX-powered search with pagination and load more
- Shortcodes: [bnb_buildings], [bnb_rooms], [bnb_room_search], [bnb_building], [bnb_room]
- Widgets: Similar Rooms, Building Rooms, Availability Calendar
- Gutenberg blocks: Building, Room, Room Search, Buildings List, Rooms List
- Frontend CSS with responsive design and CSS custom properties
- Frontend JavaScript with SearchForm, CalendarWidget, AvailabilityForm, PriceCalculator

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 14:08:11 +01:00

15 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.6.0 - 2026-02-02

Added

  • Frontend Features System:
    • Room search with multiple filters (availability, capacity, room type, amenities, price range, building)
    • AJAX-powered search with pagination and "Load More" functionality
    • Date validation (check-out after check-in, minimum today)
    • Real-time availability checking on single room pages
    • Price calculator with breakdown display
  • Shortcodes:
    • [bnb_buildings] - Display buildings list/grid with filtering and sorting
    • [bnb_rooms] - Display rooms list/grid with multiple filter options
    • [bnb_room_search] - Interactive room search form with results
    • [bnb_building id="X"] - Display single building details
    • [bnb_room id="X"] - Display single room details with availability form
  • WordPress Widgets:
    • Similar Rooms widget (shows rooms from same building/type)
    • Building Rooms widget (lists all rooms in a building)
    • Availability Calendar widget (mini calendar with booking status)
  • Gutenberg Blocks:
    • Building block with ID selector
    • Room block with ID selector
    • Room Search block with filter presets
    • Buildings List block with layout options
    • Rooms List block with filter options
    • Server-side rendered blocks for consistent output
  • Frontend Search Class (src/Frontend/Search.php):
    • Core search functionality with availability filtering
    • Price range filtering with Calculator integration
    • Pagination support
    • AJAX endpoints: search_rooms, get_availability, get_calendar, calculate_price
    • Room data formatting for JSON responses
  • Frontend Shortcodes Class (src/Frontend/Shortcodes.php):
    • All shortcode registration and handlers
    • Grid/list layout support
    • Column configuration (1-4 columns)
    • Sorting options (title, date, price, capacity)
    • Limit and offset support
  • Block Registrar Class (src/Blocks/BlockRegistrar.php):
    • Gutenberg block registration
    • Block editor assets (CSS/JS)
    • Server-side render callbacks
    • Block data localization for editor
  • Frontend Assets:
    • Comprehensive CSS with CSS custom properties for theming
    • Building and room card styles
    • Search form and results styling
    • Calendar widget styling with availability states
    • Responsive design (breakpoints: 480px, 768px, 1024px)
    • JavaScript with SearchForm, CalendarWidget, AvailabilityForm, PriceCalculator classes
    • AJAX integration with proper error handling
    • XSS-safe DOM construction (no innerHTML with user data)

Changed

  • Plugin.php updated with frontend component initialization
  • Frontend assets now include localized script data with AJAX URL, nonce, and i18n strings
  • Widget registration added to init_frontend() method
  • Search, Shortcodes, and BlockRegistrar initialized when license is valid

Security

  • AJAX nonce verification on all frontend requests
  • Input sanitization on all search parameters
  • Output escaping in shortcode and widget templates
  • XSS prevention in JavaScript (textContent instead of innerHTML)

0.5.0 - 2026-01-31

Added

  • Additional Services System:
    • Custom Post Type: Services (bnb_service)
    • Service pricing types: Included (free), Per Booking (one-time), Per Night
    • Service configuration: price, status, sort order, max quantity
    • Custom admin columns with pricing type icons and status badges
    • Filters by status and pricing type
    • Service data helper methods for pricing calculations
  • Service Categories Taxonomy (bnb_service_category)
    • Non-hierarchical (tag-like) structure
    • Icon selection per category
    • Sort order for custom ordering
    • Default categories: Food & Dining, Transportation, Wellness & Spa, Activities, Housekeeping
  • Booking-Services Integration:
    • Services meta box in Booking edit screen
    • Checkbox-based service selection
    • Quantity input for services with max_quantity > 1
    • Real-time price calculation per service based on nights
    • Services total display
    • Price breakdown shows services cost
    • Grand total (room + services) in admin list and pricing meta box
  • Admin UI Enhancements:
    • Service selector with pricing type indicators
    • Included services badge
    • Per-night price suffix display
    • Service line totals with quantity support
    • Services total summary in booking
    • CSS styles for all service-related components
    • JavaScript for dynamic service pricing calculations

Changed

  • Plugin.php updated to register Service CPT and ServiceCategory taxonomy
  • Admin assets enqueued for Service post type screens
  • Booking admin list shows total price including services
  • Booking pricing meta box displays services breakdown and grand total
  • Admin JavaScript extended with service pricing and selection logic
  • Admin CSS includes comprehensive service styling

0.4.0 - 2026-01-31

Added

  • Guest Management System with dedicated CPT:
    • Custom Post Type: Guests (bnb_guest)
    • Personal information fields (name, email, phone, DOB, nationality)
    • Address fields (street, city, postal code, country)
    • Identification fields (ID type, number, expiry date)
    • Guest status tracking (active, inactive, blocked)
    • Internal notes and preferences
    • GDPR consent tracking (marketing, data processing, consent date)
    • Booking history display with statistics
    • Helper methods: get_by_email(), get_bookings(), get_booking_count(), get_total_spent(), get_full_name(), get_formatted_address()
  • Guest-Booking Integration:
    • Guest search by email/name with AJAX autocomplete
    • Link existing guests to bookings
    • Create new guests from booking form
    • Guest profile link in booking admin
    • Automatic guest data sync when linked
    • Backward compatibility for legacy bookings without guest_id
  • GDPR/Privacy Compliance (src/Privacy/Manager.php):
    • WordPress Privacy API integration
    • Personal data exporter (guest profile + booking history)
    • Personal data eraser with anonymization option
    • Privacy policy content suggestion
    • Support for WordPress Tools > Export/Erase Personal Data
    • Guest anonymization (replaces PII with placeholder data)
    • Booking anonymization for connected bookings
  • Email Notifier Enhancements:
    • Guest data retrieval from Guest CPT when available
    • Fallback to booking meta for legacy bookings
    • New placeholders: {guest_first_name}, {guest_last_name}, {guest_full_address}
  • Admin UI Styles:
    • Guest search container and results styling
    • Linked guest display card
    • Booking history table in Guest
    • Consent status indicators
    • Guest status badges
    • Privacy action buttons
    • Anonymized data display

Changed

  • Booking meta box updated with guest search/link functionality
  • Plugin.php now initializes Guest CPT and Privacy Manager
  • Admin JavaScript includes guest search with debounce
  • Admin CSS extended with Guest and Privacy styles

Security

  • Guest email used as unique identifier for deduplication
  • GDPR-compliant data export and erasure
  • Consent tracking with timestamps
  • Anonymization preserves booking records while removing PII
  • AJAX endpoints secured with nonce verification

0.3.0 - 2026-01-31

Added

  • Booking System with full management features:
    • Custom Post Type: Bookings (bnb_booking)
    • Room and guest relationship tracking
    • Check-in/check-out date management
    • Booking status workflow (pending, confirmed, checked_in, checked_out, cancelled)
    • Status transitions with validation
    • Automatic price calculation using existing Calculator
    • Price override option for manual adjustments
    • Guest information storage (name, email, phone, notes)
    • Guest count tracking (adults, children)
    • Internal notes field for staff
    • Auto-generated booking references (BNB-YYYY-NNNNN)
  • Availability System (src/Booking/Availability.php)
    • Real-time availability checking
    • Conflict detection for overlapping bookings
    • AJAX endpoint for instant availability validation
    • Calendar data generation for rooms and buildings
    • Support for excluding booking from conflict check (for editing)
    • Utility methods: get upcoming bookings, current bookings, today's check-ins/outs
  • Calendar Admin Page (WP BnB > Calendar)
    • Monthly calendar view with availability visualization
    • Room and building filter dropdowns
    • Color-coded booking status display
    • Month navigation (previous/next/today)
    • Click-to-edit booking functionality
    • Hover tooltips with booking details
    • Legend for status colors
    • Single room and multi-room views
  • Email Notifications (src/Booking/EmailNotifier.php)
    • Admin notification for new bookings
    • Guest confirmation email on booking confirmation
    • Admin notification on booking confirmation
    • Cancellation emails to guest and admin
    • HTML email templates with styling
    • Placeholder-based template system
    • Filter hooks for customizing recipients, subject, and content
  • Booking Admin List Enhancements
    • Custom columns: room, guest, dates, nights, price, status
    • Status badges with color coding
    • Filter by room and status
    • Sortable columns for dates, guest, status
    • Price override indicator
  • Booking Meta Boxes
    • Room & Dates: room selection, date pickers, nights display, availability check
    • Guest Information: contact details, guest count, notes
    • Pricing: calculated price, breakdown display, recalculate button, override
    • Status & Notes: status dropdown with preview, internal notes

Changed

  • Plugin.php enhanced with AJAX handlers and component initialization
  • Admin JavaScript updated with booking form functionality
  • Admin CSS updated with booking and calendar styles
  • Asset enqueuing now includes Booking post type screens

Security

  • Conflict detection prevents double-booking
  • Date validation ensures check-out is after check-in
  • Status transition validation prevents invalid state changes
  • Nonce verification on availability AJAX requests
  • Capability checks on all booking operations

0.2.0 - 2026-01-31

Added

  • Pricing System with three tiers:
    • Short-term (nightly) pricing for stays up to 6 nights
    • Mid-term (weekly) pricing for stays 7-27 nights
    • Long-term (monthly) pricing for stays 28+ nights
  • PricingTier enum class with automatic tier detection
  • Season class for seasonal pricing management
    • Date range support (MM-DD format)
    • Year-spanning seasons (e.g., winter holidays Dec-Jan)
    • Price modifier (multiplier) per season
    • Priority system for overlapping seasons
    • Active/inactive status toggle
  • Calculator class for price calculations
    • Automatic tier detection based on stay duration
    • Seasonal price adjustments
    • Weekend surcharge support
    • Price breakdown for detailed invoicing
    • Currency formatting with symbol/suffix support
  • Pricing meta box on Room edit screen
    • Base prices for each tier (nightly, weekly, monthly)
    • Weekend surcharge field
    • Link to pricing settings
  • Pricing Settings tab in plugin settings
    • Configurable tier thresholds
    • Weekend days selection
    • Quick view of configured seasons
  • Seasons admin page (WP BnB > Seasons)
    • List view with all seasons
    • Add/Edit season form
    • Delete confirmation
    • Create default seasons option
  • Price column in room list admin
  • Admin CSS for pricing UI
  • Admin JavaScript for pricing interactions

Changed

  • Room post type now includes pricing fields
  • Plugin settings page has new Pricing tab
  • Enhanced asset localization with pricing i18n strings

0.1.0 - 2026-01-31

Added

  • Custom Post Type: Buildings (bnb_building)
    • Address fields (street, city, state, ZIP, country)
    • Contact information (phone, email, website)
    • Building details (total rooms, floors, year built)
    • Check-in/check-out time configuration
    • Featured image support
    • Custom admin columns (city, country, room count)
    • Sortable columns
  • Custom Post Type: Rooms (bnb_room)
    • Building relationship (parent building selection)
    • Room details (number, floor, size, capacity)
    • Guest capacity (total, max adults, max children)
    • Beds description and bathroom count
    • Room status (available, occupied, maintenance, blocked)
    • Image gallery with drag-and-drop sorting
    • Featured image support
    • Custom admin columns (building, room number, type, capacity, status)
    • Building filter dropdown in admin list
  • Custom Taxonomy: Room Types (bnb_room_type)
    • Hierarchical (category-like) structure
    • Default types: Standard, Superior, Suite, Family, Accessible, Apartment
    • Subtypes: Single, Double, Twin, Junior Suite, Executive Suite
    • Base capacity meta field
    • Sort order meta field
  • Custom Taxonomy: Amenities (bnb_amenity)
    • Non-hierarchical (tag-like) structure
    • Default amenities: WiFi, Parking, Breakfast, TV, A/C, Pet Friendly, etc.
    • Dashicon selection for visual display
    • Custom column showing icon
  • Admin enhancements
    • Gallery meta box with media library integration
    • Status badges with color coding
    • Custom title placeholders for each post type
    • Post type edit screens with proper asset loading

Changed

  • Updated admin assets to handle post type edit screens
  • Enhanced asset enqueuing to include jQuery UI Sortable for galleries
  • Improved localization with additional i18n strings

0.0.1 - 2026-01-31

Added

  • Initial plugin structure and configuration
  • Main plugin file with version checks (PHP 8.3+, WordPress 6.0+)
  • Plugin singleton class with initialization hooks
  • License Manager integration with SecureLicenseClient
  • Admin menu with Dashboard and Settings pages
  • Settings tabs for General and License configuration
  • License validation and activation via AJAX
  • Admin CSS and JavaScript assets
  • Frontend CSS and JavaScript placeholders
  • Composer configuration with dependencies:
    • twig/twig ^3.0
    • magdev/wc-licensed-product-client ^0.2
  • PSR-4 autoloading for Magdev\WpBnb namespace
  • Git submodule for license client library
  • Gitea CI/CD workflow for automated releases
  • Documentation: README.md, PLAN.md, CHANGELOG.md, CLAUDE.md
  • Translation-ready strings with wp-bnb text domain
  • Directory structure for templates, assets, and languages

Security

  • Nonce verification on all form submissions
  • Capability checks for admin operations
  • Input sanitization and output escaping
  • Server secret masking in license settings