# 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.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.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