All checks were successful
Create Release Package / build-release (push) Successful in 1m10s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 KiB
34 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.12.1] - 2026-02-04
Fixed
- Fixed WooCommerce product sync button not working on settings page
- Fixed AJAX handler registration timing (now registered directly instead of on
woocommerce_loadedhook) - Fixed sync button icon vertical alignment
- Added Dashboard link to WordPress plugins list page
Added
- Better error handling and console logging for WooCommerce sync AJAX requests
[0.12.0] - 2026-02-04
Security
- Completed comprehensive security audit (Phase 12)
- Verified WordPress best practices compliance across entire codebase
- Confirmed protection against SQL Injection: all database queries use
$wpdb->prepare()or WP_Query - Confirmed protection against XSS: all output properly escaped with
esc_html(),esc_attr(),esc_url() - Confirmed protection against CSRF: nonce verification on all forms and admin AJAX handlers
- Verified REST API endpoint security: proper permission callbacks, rate limiting, input sanitization
- Sensitive data (ID/passport numbers) properly encrypted and not exposed via API
Fixed
- Fixed Calculator being called statically in API controllers (
BookingsController,RoomsController,PricingController) - Fixed EmailNotifier method names in BookingsController (
send_admin_new_booking,send_cancellation,send_guest_confirmation) - Fixed guest_id type casting in EmailNotifier (string to int from post meta)
Notes
- Public AJAX endpoints (search, availability, calendar, price calculation) intentionally do not require nonce verification as they are read-only public APIs with proper input sanitization
- All admin AJAX endpoints properly protected with nonce verification and capability checks
[0.11.3] - 2026-02-03
Changed
- Calendar filters now display side by side instead of stacked rows
[0.11.2] - 2026-02-03
Changed
- Calendar page room column now wider (200px) with proper left alignment
- Room column displays building name on second row for better identification
- Changed calendar table layout from fixed to auto for flexible column widths
[0.11.1] - 2026-02-03
Added
- Internationalization (i18n) support:
- Translation template file
languages/wp-bnb.potwith 1,140 translatable strings - German (Switzerland) translation
languages/wp-bnb-de_CH.powith 77% coverage (875 strings) - Compiled binary
languages/wp-bnb-de_CH.mofor WordPress use - Coverage includes: admin UI, post types, taxonomies, settings, dashboard, reports, REST API, WooCommerce, CF7, widgets, blocks, shortcodes
- Translation template file
Changed
- README.md updated with comprehensive WooCommerce integration documentation
- Added REST API to key features list in README
0.11.0 - 2026-02-03
Added
- WooCommerce Integration System:
- New
src/Integration/WooCommerce/directory with complete integration Manager.php- Core integration manager with HPOS compatibility declarationProductSync.php- Room-to-WooCommerce-product synchronizationCartHandler.php- Cart item data, availability validation, dynamic pricingCheckoutHandler.php- Checkout field customization and pre-fillOrderHandler.php- Booking creation on payment completionInvoiceGenerator.php- PDF invoice generation using mPDFRefundHandler.php- Booking cancellation on full refundAdminColumns.php- Admin list cross-links between bookings and orders
- New
- Product Synchronization:
- Virtual WooCommerce products created for rooms (SKU:
bnb-room-{id}) - Auto-sync on room save, delete on room deletion
- Manual "Sync All Rooms" button in settings
- Bidirectional meta linking (room ↔ product)
- Virtual WooCommerce products created for rooms (SKU:
- Cart & Checkout:
- Booking data stored in cart items (room, dates, guests, services)
- Availability validation before add-to-cart and at checkout
- Dynamic price calculation based on dates and services
- Cart item display shows booking details (dates, guests, nights)
- Special requests and arrival time fields at checkout
- Booking summary display in checkout and order received page
- Order & Booking Integration:
- Automatic booking creation on
woocommerce_payment_complete - Guest record creation from order billing info
- Bidirectional order-booking links via meta keys
- Status synchronization (WC status → Booking status mapping)
- Booking reference generation (BNB-YYYY-NNNNN)
- Automatic booking creation on
- Invoice Generation:
- PDF invoices using existing mPDF dependency
- Invoice numbering with configurable prefix and start number
- Auto-attach invoices to WooCommerce order emails
- Download invoice button in admin order actions
- Secure storage in
wp-content/uploads/wp-bnb-invoices/
- Refund Handling:
- Full refund triggers booking cancellation
- Partial refund stores amount in booking meta without cancellation
- Refund info displayed in booking admin
wp_bnb_wc_should_cancel_on_refundfilter for customization
- Admin Enhancements:
- "WC Order" column in bookings list with order link and status
- "Booking" column in WC orders list with dates and status
- Row actions for cross-navigation between bookings and orders
- HPOS (High-Performance Order Storage) support
- WooCommerce Settings Tab with Subtabs:
- General: Enable integration, auto-confirm on payment, WC status indicator
- Products: Auto-sync toggle, product category selection, sync button
- Orders: Status mapping reference table
- Invoices: Auto-attach, prefix, starting number, logo, footer text
- Frontend Assets:
assets/css/wc-integration.css- Cart, checkout, and booking form stylesassets/js/wc-integration.js- Booking form handler, AJAX operations
Changed
- Plugin.php updated to initialize WooCommerce integration when WC is active
- Settings page now has eight tabs: General, Pricing, License, Updates, Metrics, API, WooCommerce
- HPOS compatibility declared via
FeaturesUtil::declare_compatibility()
Security
- Invoice storage protected with .htaccess (deny all)
- Nonce verification on all AJAX operations
- Capability checks for admin actions
- HPOS-compatible meta access using
$order->get_meta()/$order->update_meta_data()
0.10.1 - 2026-02-03
Added
- API Settings subtabs for better organization:
- General subtab: Enable/disable REST API, rate limiting toggle, API information
- Rate Limits subtab: Configurable time window and endpoint-specific limits
- Endpoints subtab: Full endpoint documentation with HTTP method badges
- Configurable rate limiting:
- Time window setting (10-300 seconds, default 60)
- Per-endpoint-type limits (public, availability, booking, admin)
- Settings stored in WordPress options with fallback defaults
Changed
- RateLimiter class now loads limits from WordPress options
- README updated with configurable rate limiting documentation
0.10.0 - 2026-02-03
Added
- REST API Infrastructure:
- New
src/Api/directory with complete REST API implementation ResponseFormatter.php- Standardized response formatting (success, collection, error responses)RateLimiter.php- Transient-based rate limiting with tiered limitsControllers/AbstractController.php- Base controller with common functionalityRestApi.php- Main registration class with namespacewp-bnb/v1
- New
- Buildings API:
GET /wp-bnb/v1/buildings- List buildings with pagination and searchGET /wp-bnb/v1/buildings/{id}- Get single building with address, contact, detailsGET /wp-bnb/v1/buildings/{id}/rooms- Get rooms in a building with status filter
- Rooms API:
GET /wp-bnb/v1/rooms- List rooms with filters (building, room_type, amenities, capacity, status)GET /wp-bnb/v1/rooms/{id}- Get room details with gallery, pricing, amenitiesGET /wp-bnb/v1/rooms/{id}/availability- Check availability with price calculationGET /wp-bnb/v1/rooms/{id}/calendar- Get monthly calendar dataPOST /wp-bnb/v1/availability/search- Search available rooms by date range and criteria
- Bookings API:
POST /wp-bnb/v1/bookings- Create booking (public, creates pending status)GET /wp-bnb/v1/bookings- List bookings with filters (admin)GET /wp-bnb/v1/bookings/{id}- Get booking details (admin)PATCH /wp-bnb/v1/bookings/{id}- Update booking (admin)DELETE /wp-bnb/v1/bookings/{id}- Cancel booking (admin)POST /wp-bnb/v1/bookings/{id}/confirm- Confirm pending booking (admin)POST /wp-bnb/v1/bookings/{id}/check-in- Check in guest (admin)POST /wp-bnb/v1/bookings/{id}/check-out- Check out guest (admin)
- Guests API (admin only):
GET /wp-bnb/v1/guests- List guests with paginationGET /wp-bnb/v1/guests/{id}- Get guest details (excludes encrypted ID numbers)GET /wp-bnb/v1/guests/search- Search guests by name/emailGET /wp-bnb/v1/guests/{id}/bookings- Get guest's booking history
- Services API:
GET /wp-bnb/v1/services- List active services with categoriesGET /wp-bnb/v1/services/{id}- Get service details with pricing infoPOST /wp-bnb/v1/services/{id}/calculate- Calculate service price for booking
- Pricing API:
POST /wp-bnb/v1/pricing/calculate- Full price calculation with servicesGET /wp-bnb/v1/pricing/seasons- Get configured seasons and pricing modifiers
- API Settings tab in plugin settings:
- Enable/disable REST API toggle
- Enable/disable rate limiting toggle
- Endpoint documentation table
- Authentication instructions
Changed
- Plugin.php updated to initialize REST API on
rest_api_inithook - Settings page now has seven tabs: General, Pricing, License, Updates, Metrics, API
- README.md updated with comprehensive REST API documentation
Security
- Rate limiting: public (60/min), availability (30/min), booking (10/min), admin (120/min)
- Admin endpoints require
edit_postscapability - Supports WordPress Application Passwords for external API access
- Client identification by user ID (authenticated) or IP address (anonymous)
- Proxy/Cloudflare IP detection via X-Forwarded-For and CF-Connecting-IP headers
0.9.0 - 2026-02-03
Added
- Prometheus Metrics Integration:
- New
src/Integration/Prometheus.phpclass for metrics collection - Integration with wp-prometheus plugin via
wp_prometheus_collect_metricshook - Inventory metrics: buildings total, rooms by status, services by status
- Booking metrics: bookings by status, check-ins/check-outs today, upcoming 7 days, avg duration
- Guest metrics: total guests, guests by status, repeat guests, new guests this month
- Occupancy metrics: current rate, monthly rate, occupied rooms, total bed capacity
- Revenue metrics: this month, YTD, average booking value, services revenue
- New
- Grafana Dashboard:
- Pre-configured dashboard at
assets/grafana/wp-bnb-dashboard.json - Automatic registration with wp-prometheus dashboard provider
- Occupancy gauges with color-coded thresholds
- Pie charts for bookings, rooms, and guests by status
- Revenue and guest statistics panels
- Responsive grid layout with 24 panels
- Pre-configured dashboard at
- Settings page Metrics tab:
- Enable/disable metrics collection toggle
- WP Prometheus detection with status indicator
- Complete metrics reference table
- Dashboard file location and export info
Changed
- Plugin.php updated to initialize Prometheus integration
- Settings page now has six tabs: General, Pricing, License, Updates, Metrics
0.8.0 - 2026-02-03
Added
- Admin Dashboard with comprehensive statistics:
- Occupancy overview card with current rate and comparison to last month
- Revenue summary card with this month, YTD, and comparison
- Bookings stat card with pending/confirmed counts
- Guests stat card with total, new, and repeat counts
- Today's Activity widget showing check-ins and check-outs
- Upcoming Bookings widget (next 7 days)
- Quick Actions widget for common tasks
- Chart.js integration for visual trend charts:
- Occupancy trend line chart (30 days)
- Revenue trend bar chart (6 months)
- Reports page with three report types:
- Occupancy Report: by room, by building, with progress bars
- Revenue Report: by room, by pricing tier, with averages
- Guest Statistics: top guests, nationality breakdown
- Date range filters (this month, last month, this year, custom)
- Export functionality:
- CSV export for all report types (native PHP)
- PDF export using mPDF library with professional styling
- New Composer dependency: mpdf/mpdf ^8.2 for PDF generation
- Dashboard and Reports CSS styles in admin.css (~350 lines)
- JavaScript chart initialization and report page handlers
Changed
- Dashboard now uses dedicated
src/Admin/Dashboard.phpclass - Admin menu now includes Reports submenu item
- Asset enqueuing conditionally loads Chart.js on dashboard page
0.7.2 - 2026-02-03
Fixed
- CF7 tag generator buttons not appearing in admin form editor
- Moved CF7 initialization from frontend-only to run in both admin and frontend contexts
- Tag generators now properly register via
wpcf7_admin_inithook
0.7.1 - 2026-02-03
Added
- CF7 Admin Tag Generator buttons:
- Tag generator buttons appear in CF7 form editor for all WP BnB custom tags
- BnB Building select with first option label configuration
- BnB Room select with building field linking and price display options
- BnB Check-in date with min/max advance booking days
- BnB Check-out date with check-in field linking and min/max nights
- BnB Guests count with room field linking and min/max/default values
- All generators support id and class attribute configuration
0.7.0 - 2026-02-03
Added
- Contact Form 7 Integration:
- New
src/Integration/CF7.phpclass for CF7 integration - Custom form tags:
[bnb_building_select],[bnb_room_select],[bnb_date_checkin],[bnb_date_checkout],[bnb_guests] - Server-side validation for all custom tags
- Availability checking before form submission
- Automatic booking creation on form submission with 'pending' status
- Guest record creation/linking using existing
find_or_create_guestpattern - Price calculation using existing Calculator class
- Email notifications via existing EmailNotifier
- New
- CF7 Frontend Assets:
assets/js/cf7-integration.jsfor dynamic form behavior- Building-based room filtering
- Date linking (checkout min = checkin + 1)
- Capacity validation against selected room
- AJAX availability checking with status display
- Dynamic price calculation display
assets/css/cf7-integration.cssfor form styling- Availability status indicators (checking/available/unavailable)
- Price display formatting
- Capacity warning styling
- Responsive design with dark mode support
- Custom CF7 Mail Tags:
[_bnb_booking_reference]- Generated booking reference[_bnb_booking_id]- Booking post ID[_bnb_room_name]- Selected room title[_bnb_calculated_price]- Formatted price[_bnb_nights]- Number of nights
- Form Type Detection:
- Auto-detects booking forms by presence of
[bnb_room_select],[bnb_date_checkin],[bnb_date_checkout] - CSS class
wp-bnb-booking-formfor explicit form type declaration - Inquiry forms use default CF7 email handling without booking creation
- Auto-detects booking forms by presence of
Changed
- Plugin.php updated to conditionally initialize CF7 integration when CF7 is active
- Frontend assets now include CF7-specific CSS and JavaScript when CF7 is detected
Dependencies
- Contact Form 7 plugin required for CF7 integration features (optional)
0.6.1 - 2026-02-03
Added
- Auto-Update System:
- New
src/License/Updater.phpclass for WordPress update integration - Hooks into
pre_set_site_transient_update_pluginsfor update detection - Plugin info modal via
plugins_apifilter - 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
- New
- 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()anddecrypt()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
- Custom Post Type: Services (
- 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()
- Custom Post Type: Guests (
- 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)
- Custom Post Type: Bookings (
- 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\WpBnbnamespace - 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-bnbtext 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