# Changelog All notable changes to WooCommerce Tier and Package Prices 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). ## [1.1.8] - 2025-12-22 ### Fixed - **CRITICAL:** Plugin activation fatal error introduced in v1.1.3-v1.1.7 - Fixed premature class instantiation of `WC_TPP_Admin` and `WC_TPP_Product_Meta` - Both classes now instantiated via `woocommerce_loaded` hook after WooCommerce is available - Resolves WordPress 6.9.x and WooCommerce 10.x compatibility issues ### Technical Details - Removed `new WC_TPP_Admin();` from bottom of class-wc-tpp-admin.php - Removed `new WC_TPP_Product_Meta();` from bottom of class-wc-tpp-product-meta.php - Added both classes to `init_classes()` method in main plugin file - All four main classes (Admin, Product Meta, Frontend, Cart) now follow same initialization pattern - Ensures WooCommerce hooks are available before registration ## [1.1.7] - 2025-12-22 ### Added - Optional text labels for tier pricing (similar to package labels) - Clickable tier pricing rows that auto-populate quantity field - Add to Cart button auto-disable when quantity is 0 or less ### Enhanced - Tier pricing table rows now clickable with visual hover feedback - Clicking a tier row sets quantity to that tier's minimum quantity - Smooth scroll animation to quantity field when tier is clicked - Add to Cart button disabled state with visual feedback (opacity, cursor) - Tier labels display below quantity in frontend table (italic, gray text) ### Technical Details - Added optional `label` field to tier pricing meta box (admin/tier-row.twig) - Updated tier save logic to store label field (class-wc-tpp-product-meta.php) - Enhanced tier pricing template to display labels (frontend/tier-pricing-table.twig) - Added click handler for tier rows (assets/js/frontend.js) - Added `updateAddToCartButton()` function to manage button state - CSS: `.wc-tpp-tier-label` styling for tier labels - CSS: Clickable cursor and hover animation for tier rows - CSS: Disabled button styling (`.single_add_to_cart_button:disabled`) ## [1.1.6] - 2025-12-21 ### Fixed - **CRITICAL:** Plugin activation fatal error in v1.1.3, v1.1.4, and v1.1.5 - Fatal error caused by premature class instantiation before WooCommerce is loaded - Removed immediate class instantiation from `class-wc-tpp-cart.php` and `class-wc-tpp-frontend.php` ### Technical - Moved `WC_TPP_Cart` and `WC_TPP_Frontend` instantiation to `woocommerce_loaded` hook - Added `init_classes()` method to main plugin class for controlled class initialization - Ensures WooCommerce is fully loaded before registering hooks that depend on WC functions - Fixed hook registration timing to prevent accessing WooCommerce before it's available ## [1.1.5] - 2025-12-21 ### Fixed - **CRITICAL:** Plugin activation error in v1.1.3 and v1.1.4 caused by `add_cart_quantity_css()` method - Fatal error when WooCommerce cart object not available during plugin initialization - Frontend errors on admin pages and during activation ### Technical - Added `function_exists('WC')` check before accessing WooCommerce functions - Added `is_admin()` check to prevent CSS injection on admin pages - Enhanced error prevention in `add_cart_quantity_css()` method ## [1.1.4] - 2025-12-21 ### Added - WooCommerce Blocks support for quantity restrictions - `woocommerce_store_api_product_quantity_editable` filter for block-based carts - `block_quantity_editable()` method in WC_TPP_Cart class - CSS targeting for `.wc-block-components-quantity-selector` elements ### Enhanced - "View Options" button styling to match standard WooCommerce "Add to Cart" buttons - Button padding, font weight, and border radius for better visual consistency - Hover effects with smooth transitions ### Fixed - WooCommerce blocks cart quantity selector visibility for restricted products - WooCommerce blocks mini-cart quantity selector visibility ### Technical - Added Store API integration for block-based cart/mini-cart - Enhanced CSS for block cart items with product-specific selectors - Improved button styling with WooCommerce standard values (0.618em × 1em padding) - Added transition effects for better UX ## [1.1.3] - 2025-12-21 ### Fixed - Cart quantity input visibility issue in cart and cart sidebar for restricted products - Enhanced filter priority (999) to ensure quantity hiding runs after other plugins - Mini-cart quantity input now properly hidden for restricted products ### Added - `woocommerce_widget_cart_item_quantity` filter support for mini-cart - `add_cart_quantity_css()` method for dynamic CSS injection - `data-product-id` attribute to quantity spans for targeted CSS selectors - CSS class `wc-tpp-restricted-qty` for improved targeting ### Technical - Increased filter priority from 10 to 999 for `woocommerce_cart_item_quantity` - Added `maybe_hide_mini_cart_quantity_input()` method in WC_TPP_Cart class - Dynamic CSS injection via `wp_head` action as fallback - Used both sibling (+) and general sibling (~) CSS selectors for DOM variations ## [1.1.2] - 2025-12-21 ### Added - Catalog "View Options" button for products with quantity restrictions - Automatic button replacement in shop/category/archive pages - Eye icon (Dashicons) for "View Options" button styling ### Changed - "Add to Cart" button replaced with "View Options" link on catalog pages for restricted products - CSS now loads on all WooCommerce pages (shop, cart, checkout, product) - Catalog buttons now direct to product page instead of adding to cart ### Technical - Added `has_quantity_restriction()` static method in WC_TPP_Frontend class - Added `modify_catalog_add_to_cart_button()` method in WC_TPP_Frontend class - Extended `woocommerce_loop_add_to_cart_link` filter hook - CSS classes: `wc-tpp-view-options`, `wc-tpp-cart-quantity`, `wc-tpp-restriction-notice` - Updated `enqueue_scripts()` to load CSS on all WooCommerce pages ### Translations - Added 2 new translatable strings - Updated all translations (en_US, de_DE, de_CH_informal) - Compiled all .mo files with new strings ## [1.1.1] - 2025-12-21 ### Added - Cart quantity field hiding when package restriction is enabled - Automatic read-only quantity display in cart for restricted products ### Changed - Cart quantity input replaced with plain text when restrictions apply - Enhanced cart display to prevent quantity modification for restricted products ### Fixed - Cart quantity bypass vulnerability for package-restricted products ### Technical - Added `maybe_hide_cart_quantity_input()` method in WC_TPP_Cart class - Extended `woocommerce_cart_item_quantity` filter hook - CSS class `wc-tpp-cart-quantity` for styled quantity display ## [1.1.0] - 2025-12-21 ### Added - Package quantity restriction feature - Global setting to restrict quantities to defined package sizes - Per-product setting to restrict quantities to defined package sizes - Frontend validation preventing non-package quantities - Server-side cart validation for package quantities - User-friendly error messages showing available package sizes - Automatic quantity field hiding when restriction is enabled - Package selection UI with highlighted states ### Changed - Enhanced package pricing display template with restriction mode support - Improved JavaScript to handle restricted mode package selection - Updated frontend to show "Choose a package size below" notice in restricted mode ### Technical - Added `validate_package_quantity()` method in WC_TPP_Cart class - Added `maybe_hide_quantity_input()` method in WC_TPP_Frontend class - Extended `woocommerce_add_to_cart_validation` filter hook - Added `wc-tpp-restricted-mode` CSS class for styling - New product meta: `_wc_tpp_restrict_to_packages` - New global option: `wc_tpp_restrict_package_quantities` ### Translations - Added 7 new translatable strings - Updated all translations (en_US, de_DE, de_CH_informal) - Compiled all .mo files with new strings ## [1.0.2] - 2025-12-21 ### Changed - Migrated settings to WooCommerce Settings page as dedicated tab - Settings now appear under WooCommerce > Settings > Tier & Package Prices - Improved integration with WooCommerce native settings API ### Added - WC_TPP_Settings class extending WC_Settings_Page - Better integration with WooCommerce settings system - Consistent UI with other WooCommerce settings tabs ### Removed - Standalone settings submenu (WooCommerce > Tier & Package Prices) - Custom settings template (templates/admin/settings-page.twig) ### Technical - Implemented WooCommerce settings filter hook (woocommerce_get_settings_pages) - Uses WC_Admin_Settings for rendering and saving - Automatic settings persistence via WooCommerce API ## [1.0.1] - 2025-12-21 ### Added - Twig template engine integration for all templates - Template loader class with WordPress integration - German (Switzerland, Informal) translation (de_CH_informal) - Composer dependency management - Comprehensive translation support in Twig templates - Template caching support (disabled in debug mode) ### Changed - Migrated all PHP templates to Twig format (.twig) - Improved template organization and separation of concerns - Enhanced security with automatic HTML escaping in templates - Updated composer.json with complete package metadata ### Removed - Old PHP template files (replaced with Twig) ### Technical - Added Twig v3.22.2 dependency - Created WC_TPP_Template_Loader class for centralized template rendering - Integrated WordPress functions (__(), _e(), esc_*, wc_price()) into Twig - Added Swiss German localization with informal address form - Organized templates into admin/ and frontend/ directories ## [1.0.0] - 2025-12-21 ### Added - Initial release - Tier pricing functionality (quantity-based discounts) - Package pricing functionality (fixed-price bundles) - Admin settings page for plugin configuration - Product meta boxes for configuring tier and package prices - Frontend pricing tables display - Cart integration for automatic price calculation - WooCommerce HPOS compatibility - Multilingual support with text domain - German (Germany) translation (de_DE) - English (US) translation (en_US) ### Features - Volume discounts based on quantity thresholds - Fixed-price packages with custom labels - Configurable display positions (before/after cart button, after price) - Real-time price updates in cart - Responsive pricing tables - Admin-friendly interface for price management