14 Commits

Author SHA1 Message Date
fa26247d1b Version 1.4.1 - Localhost license bypass and auto-updates
All checks were successful
Create Release Package / build-release (push) Successful in 1m3s
Added localhost/self-licensing license bypass and WordPress auto-update
integration from license server.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:55:41 +01:00
7286459ff2 Version 1.3.1 - Switch to SecureLicenseClient with signature verification
- Upgraded from LicenseClient to SecureLicenseClient with HMAC-SHA256 response signature verification
- Added Server Secret configuration field for secure communication
- Added rate limit exception handling with retry time display
- Added signature verification error handling
- Added URL validation error handling (SSRF protection)
- Updated all translation files with new strings
- Compiled .mo files for all 7 language variants

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 19:23:42 +01:00
74c14581f1 Release version 1.3.0 - License management and settings sub-tabs
Breaking Changes:
- PHP 8.3+ now required (previously 7.4+)

Added:
- License management integration using magdev/wc-licensed-product-client
- Settings page split into General and License sub-tabs
- License validation and activation via AJAX
- PHP version check with admin notice

Changed:
- Refactored settings class to use modern WooCommerce patterns
- Updated all translations with new license-related strings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 19:39:12 +01:00
ae946683b3 Update translation files with new strings from v1.2.6 and v1.2.7
Added translations for variable product parent pricing features:
- "Default Tier & Package Pricing for All Variations"
- "Set default pricing for all variations. Individual variations can override these defaults with their own specific pricing."
- "Configure default tier and package pricing here. All variations will inherit these settings unless they define their own specific pricing."
- "Restrict to Package Quantities (Default)"
- "Default restriction setting for all variations. Only allow quantities defined in packages above."

Updated all available language files:
- wc-tier-package-prices.pot (v1.2.7)
- de_CH, de_CH_informal, de_DE, de_DE_informal (German)
- fr_CH (French, Switzerland)
- it_CH (Italian, Switzerland)
- en_US (English, US)

Compiled all .po files to .mo for production use.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-30 01:01:49 +01:00
ef314e36bc Release version 1.2.2 - Admin UI bugfixes for variations
Fixed three bugs in variation pricing interface:
- Removed table borders for variation pricing to match WooCommerce UI style
- Added missing translations (Min Quantity, Price, Label) to all language files
- Fixed restrict_to_packages checkbox rendering in variation fields

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-29 20:53:23 +01:00
f958c7b640 Release version 1.1.21 - Add multilingual support for Swiss locales
Added translations for Swiss German (formal and informal), Swiss French,
and Swiss Italian locales to support multilingual e-commerce in Switzerland.

New Features:
- Added de_CH (Swiss German - formal "Sie") translation
- Added de_DE_informal (Informal German - "du") translation
- Added fr_CH (Swiss French) translation
- Added it_CH (Swiss Italian) translation

Technical Changes:
- Created 4 new .po translation source files
- Compiled all .po files to .mo format for runtime use
- Updated version to 1.1.21 in plugin header and constant
- Updated composer.json version to 1.1.21
- Swiss locales use CHF currency formatting (e.g., "CHF 50.-")
- German informal translations use "du/dein" instead of "Sie/Ihr"

Documentation:
- Updated CHANGELOG.md with v1.1.21 release notes
- Updated CLAUDE.md with current version and translation status
- Marked roadmap item as completed in CLAUDE.md

Release Package:
- Created wc-tier-and-package-prices-1.1.21.zip (404 KB)
- Generated MD5 checksum: 16813b3ed0d1001d5f60194d61d36fc2
- Generated SHA256 checksum: e0063852a9ac23b1fd994471a2829f9dcbe26316f00ddee2d00f77c7c6a47c8f

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-23 01:44:41 +01:00
e40830b69b Release version 1.1.6 - Critical fix for plugin activation
Fixed critical bug that prevented plugin activation in v1.1.3, v1.1.4, and v1.1.5.

Root Cause:
- WC_TPP_Cart and WC_TPP_Frontend classes were instantiated immediately when
  their files were loaded (via `new ClassName();` at bottom of files)
- This happened BEFORE WooCommerce was fully loaded
- Hook registration attempted to access WooCommerce functions before they existed
- Result: Fatal error during plugin activation

Solution:
- Removed immediate instantiation from class-wc-tpp-cart.php (line 251)
- Removed immediate instantiation from class-wc-tpp-frontend.php (line 186)
- Added init_classes() method to main plugin class
- Classes now instantiated via woocommerce_loaded hook
- Ensures WooCommerce is fully initialized before any hooks are registered

Changes:
- includes/class-wc-tpp-cart.php - Removed `new WC_TPP_Cart();`
- includes/class-wc-tpp-frontend.php - Removed `new WC_TPP_Frontend();`
- wc-tier-and-package-prices.php - Added init_classes() and woocommerce_loaded hook
- CHANGELOG.md - Added v1.1.6 section
- composer.json - Version 1.1.6
- All translation files updated to 1.1.6
- All .mo files recompiled

This fix ensures proper WordPress plugin lifecycle:
1. Plugin file loaded
2. Classes defined (but not instantiated)
3. WooCommerce loads
4. woocommerce_loaded hook fires
5. Classes instantiated with full WooCommerce availability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:57:27 +01:00
9765c5f119 Release version 1.1.5 - Critical bug fix for plugin activation
CRITICAL FIX: Resolved fatal error that prevented plugin activation in
versions 1.1.3 and 1.1.4. The add_cart_quantity_css() method was attempting
to access WooCommerce cart object during wp_head action, causing failures
when WooCommerce wasn't fully initialized or on admin pages.

Fixes:
- Plugin activation error in v1.1.3 and v1.1.4
- Fatal error when WooCommerce cart object not available
- Frontend errors on admin pages
- Issues during plugin initialization

Technical Changes:
- Added function_exists('WC') check before accessing WooCommerce
- Added is_admin() check to prevent CSS injection on admin pages
- Enhanced add_cart_quantity_css() with proper guards
- Line 191: if (!function_exists('WC') || !WC()->cart || is_admin())

Root Cause:
The add_cart_quantity_css() method (added in v1.1.3) hooks into wp_head
but didn't properly check if WooCommerce cart was available, causing
errors during plugin activation and on admin pages.

Updated Files:
- includes/class-wc-tpp-cart.php (enhanced error checking)
- wc-tier-and-package-prices.php (version 1.1.5)
- composer.json (version 1.1.5)
- CHANGELOG.md (v1.1.5 section)
- All translation files (.pot, .po, .mo) updated to version 1.1.5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:49:24 +01:00
88e30d028c Release version 1.1.4 - WooCommerce Blocks support and improved styling
Added comprehensive WooCommerce Blocks support for quantity restrictions
and improved "View Options" button styling to match standard WooCommerce
Add to Cart buttons.

Features:
- WooCommerce Blocks cart/mini-cart quantity restriction support
- Store API integration for block-based carts
- Improved "View Options" button styling with WooCommerce standards
- Enhanced hover effects and transitions

Technical Changes:
- Added woocommerce_store_api_product_quantity_editable filter
- Added block_quantity_editable() method in WC_TPP_Cart class
- Enhanced CSS for .wc-block-components-quantity-selector targeting
- Updated button styling: padding (0.618em × 1em), font-weight (700)
- Added transition effects for smooth hover states

Fixed:
- WooCommerce blocks cart quantity selector now properly hidden
- WooCommerce blocks mini-cart quantity selector visibility
- "View Options" button now matches Add to Cart button appearance

Updated Files:
- includes/class-wc-tpp-cart.php (WooCommerce Blocks support)
- assets/css/frontend.css (enhanced button styling)
- wc-tier-and-package-prices.php (version 1.1.4)
- composer.json (version 1.1.4)
- CHANGELOG.md (v1.1.4 section)
- All translation files (.pot, .po, .mo) updated to version 1.1.4

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:33:34 +01:00
d55ada7924 Release version 1.1.3 - Cart quantity visibility fix
Fixed persistent cart quantity input visibility issues for products with
package quantity restrictions. Enhanced implementation ensures quantity
inputs are properly hidden in both main cart and mini-cart/sidebar.

Fixes:
- Cart quantity inputs now properly hidden with increased filter priority
- Mini-cart quantity inputs correctly replaced with read-only text
- Added fallback CSS injection to handle theme/plugin conflicts
- Enhanced DOM targeting with data attributes and multiple CSS selectors

Technical Changes:
- Increased filter priority to 999 for woocommerce_cart_item_quantity
- Added woocommerce_widget_cart_item_quantity filter for mini-cart support
- Added add_cart_quantity_css() method for dynamic CSS injection
- Added maybe_hide_mini_cart_quantity_input() method
- Enhanced quantity spans with data-product-id attribute
- Added wc-tpp-restricted-qty CSS class
- Implemented sibling (+) and general sibling (~) CSS selectors

Updated Files:
- includes/class-wc-tpp-cart.php (enhanced with mini-cart support)
- wc-tier-and-package-prices.php (version 1.1.3)
- composer.json (version 1.1.3)
- CHANGELOG.md (v1.1.3 section)
- All translation files (.pot, .po, .mo) updated to version 1.1.3

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:19:18 +01:00
4ece4dd69e Release version 1.1.2 - Catalog button modification
Enhanced package quantity restriction enforcement by replacing "Add to Cart"
buttons with "View Options" links on catalog pages for products with
quantity restrictions. This prevents customers from attempting to add
restricted products directly from shop/category pages.

Changes:
- Added catalog button modification for restricted products
- Implemented "View Options" button with eye icon styling
- Created has_quantity_restriction() helper method
- Extended CSS loading to all WooCommerce pages
- Added modify_catalog_add_to_cart_button() filter method
- Updated translations with 2 new strings (en_US, de_DE, de_CH_informal)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:04:41 +01:00
3e06137559 Release version 1.1.1 - Cart quantity field hiding
Enhanced package quantity restriction enforcement by hiding the cart
quantity input field when restrictions are enabled. This prevents
customers from modifying quantities in the cart to bypass package
restrictions.

Changes:
- Added cart quantity input hiding for restricted products
- Implemented woocommerce_cart_item_quantity filter hook
- Created maybe_hide_cart_quantity_input() method in WC_TPP_Cart
- Fixed cart quantity bypass vulnerability
- Cart displays quantity as read-only text for restricted products

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 17:21:40 +01:00
e0a32821ee Release version 1.1.0 - Package quantity restriction feature
Added comprehensive package quantity restriction functionality that allows
limiting product purchases to predefined package sizes only.

Features:
- Global setting to enable package quantity restrictions
- Per-product override for quantity restrictions
- Automatic hiding of quantity input field when restricted
- Frontend validation with package selection UI
- Server-side cart validation
- User-friendly error messages
- Complete translations for all supported languages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 15:54:04 +01:00
7273c9cde7 Release version 1.0.1
- Add Twig template engine integration
- Migrate all templates to Twig format
- Add German (Switzerland, Informal) translation
- Improve template organization and security
- Add Composer dependency management
- Create comprehensive changelog
2025-12-21 04:56:50 +01:00