# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.6.1] - 2026-02-03 ### Added - Auto-Update System: - New `src/License/Updater.php` class for WordPress update integration - Hooks into `pre_set_site_transient_update_plugins` for update detection - Plugin info modal via `plugins_api` filter - Configurable update check frequency (1-168 hours) - Option to enable/disable update notifications - Option to enable/disable automatic updates - AJAX endpoint for manual update check - Automatic cache clearing when license settings change - Updates Tab in Settings: - Enable/disable update notifications toggle - Enable/disable automatic updates toggle - Update check frequency setting - Manual "Check for Updates" button - Display of last check timestamp and current version - Localhost Development Mode: - License bypass for local development environments - Detects: localhost, 127.0.0.1, ::1, .local/.test/.localhost/.dev/.ddev.site domains - Private IP range detection (10.x.x.x, 172.16-31.x.x, 192.168.x.x) - "Development Mode" notice on Dashboard and License settings page - Extended General Settings: - Business address fields (street, city, postal code, country) - Contact fields (email, phone, website) - Social media fields (Facebook, Instagram, X/Twitter, LinkedIn, TripAdvisor) - Pricing Settings Subtabs: - Split into three subtabs: Pricing Tiers, Weekend Days, Seasons - Each subtab has its own save button - Seasons subtab shows priority column and link to Seasons Manager - Guest Data Encryption: - AES-256-CBC encryption for sensitive data (ID/passport numbers) - Uses WordPress AUTH_KEY for encryption key derivation - `encrypt()` and `decrypt()` methods in Guest class - Backward compatible with legacy unencrypted data - Security notice displayed in Identification meta box - Guest Auto-Creation from Booking: - When new guest data is entered in booking form, guest record is automatically created - Links booking to the new guest via guest_id meta - Prevents duplicate guest entries ### Changed - Admin submenu reordered for better organization: - Dashboard at top, Settings at bottom - Logical grouping: Buildings, Rooms, Bookings, Guests, Services, Calendar, Seasons - Booking title auto-generates with guest name and dates (room number removed) - Disabled Gutenberg block editor for form-based post types: - Service, Guest, and Booking now use classic editor - Meta boxes display properly instead of being hidden at bottom - Form-based interfaces more appropriate than block editor for data entry - Settings tabs now flush with tab content (no gap) ### Fixed - Fixed Booking admin issues with auto-draft status causing type errors - Fixed guest dropdown to always load existing guests - Fixed booking history display on Guest edit page - Fixed service pricing meta box not displaying radio buttons (Gutenberg hiding meta boxes) ### Security - Guest ID/passport numbers encrypted at rest using AES-256-CBC - Random IV generation for each encryption operation - Secure key derivation from WordPress AUTH_KEY ## [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 [0.6.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.6.1 [0.6.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.6.0 [0.5.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.5.0 [0.4.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.4.0 [0.3.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.3.0 [0.2.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.2.0 [0.1.0]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.1.0 [0.0.1]: https://src.bundespruefstelle.ch/magdev/wp-bnb/releases/tag/v0.0.1