Commit Graph
9 Commits
Author SHA1 Message Date
magdevandClaude Sonnet 4.5 601570d724 Bump version to 1.1.7 for release
- Version 1.1.7 includes compiled .mo translation files
- Critical fix: Translations now display in WordPress admin
- All 6 locales (de_DE, de_DE_informal, de_CH, de_CH_informal, fr_CH, it_CH) fully functional

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:35:53 +01:00
magdevandClaude Sonnet 4.5 1b7c7a0257 Bump version to 1.1.6 for release
Incremented version number to 1.1.6 reflecting admin translation updates.

Changes:
- Version header: 1.1.5 → 1.1.6
- Version constant: 1.1.5 → 1.1.6
- CHANGELOG.md: Added v1.1.6 release notes

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:16:43 +01:00
magdevandClaude Sonnet 4.5 8fc0614334 Fix critical Twig filter error in product selector template
Fixed "Unknown 'esc_attr' filter" error that occurred when rendering
the product selector template. The issue was caused by WordPress
escaping functions being registered only as Twig functions, not filters.

Changes:
- Added TwigFilter registrations for esc_html, esc_attr, esc_url
- Template now supports both filter syntax (|esc_attr) and function syntax
- Fixes compatibility issues when other plugins use their own Twig instances
- Version bump to 1.1.5

This resolves the bug documented in logs/fatal-errors-2025-12-31.log

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:06:08 +01:00
magdevandClaude Sonnet 4.5 413b5d8acd Add WooCommerce HPOS compatibility and fix pricing conflicts (v1.1.3)
Fixes WooCommerce compatibility warnings reported by user.

WooCommerce HPOS compatibility:
- Added before_woocommerce_init hook to declare HPOS compatibility
- Declares compatibility with custom_order_tables feature
- Ensures plugin works with WooCommerce's modern order storage

Price calculation improvements:
- Added static flag to prevent multiple executions
- Added composable_price_calculated flag to cart items
- Prevents conflicts with third-party pricing plugins
- Stops other plugins from re-calculating composable product prices

This resolves incompatibility warnings with:
- WooCommerce Analytics
- WooCommerce Update Manager
- Third-party pricing extensions

Files modified:
- wc-composable-product.php: Version 1.1.3, HPOS declaration
- includes/Cart_Handler.php: Improved price calculation guards
- CHANGELOG.md: Documented changes

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:11:29 +01:00
magdevandClaude Sonnet 4.5 f1382490ec Fix Settings.php class loading timing issue (v1.1.2)
CRITICAL BUG FIX: v1.1.1 still had the same error!

Root cause analysis:
- v1.1.1 changed hook to woocommerce_init but error persisted
- Real issue: Settings.php was require_once'd in Plugin::includes()
- At that point, class extends WC_Settings_Page which doesn't exist yet
- Even woocommerce_init fires before WC_Settings_Page is loaded

Solution:
- Removed require_once from Plugin::includes() (line 93)
- Moved require_once to Plugin::add_settings_page() (line 196)
- Settings.php now loads on-demand via woocommerce_get_settings_pages filter
- This filter fires when WooCommerce has loaded all settings classes

Changes:
- includes/Plugin.php: Delayed Settings.php inclusion with explanatory comment
- wc-composable-product.php: Version bump to 1.1.2
- CHANGELOG.md: Documented fix and noted v1.1.1 was insufficient

This addresses the actual root cause that persisted through 3 versions.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:59:17 +01:00
magdevandClaude Sonnet 4.5 7520a37b05 Fix WC_Settings_Page class loading issue (v1.1.1)
Critical bug fix for settings page initialization:
- Changed hook from woocommerce_loaded to woocommerce_init
- woocommerce_loaded fires before WC_Settings_Page is loaded
- woocommerce_init ensures all WooCommerce core classes are available

This resolves the "Class WC_Settings_Page not found" fatal error
that prevented the plugin from activating successfully.

Version bumped from 1.1.0 to 1.1.1 (patch release).

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:50:35 +01:00
magdevandClaude Sonnet 4.5 e9df6e4278 Implement comprehensive stock management integration (v1.1.0)
Added complete inventory tracking system for composable products:
- Stock validation during product selection and add-to-cart
- Automatic stock deduction on order completion/processing
- Automatic stock restoration on order cancellation/refund
- Stock status indicators with visual feedback (In stock, Low stock, Out of stock)
- Prevention of out-of-stock item selection
- Low stock warnings when 5 or fewer items remain
- Order notes documenting all stock changes

New files:
- includes/Stock_Manager.php: Core stock management logic

Modified files:
- includes/Cart_Handler.php: Integrated stock validation
- includes/Product_Selector.php: Added stock info to product data
- includes/Plugin.php: Added Stock_Manager to includes
- templates/product-selector.twig: Stock status display
- assets/css/frontend.css: Stock indicator styling
- languages/*.pot/*.po: 8 new translatable strings

Version bumped to 1.1.0 with updated CHANGELOG.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:41:53 +01:00
magdevandClaude Sonnet 4.5 a581ef42e6 Fix fatal error and ensure WooCommerce settings tab integration (v1.0.1)
Fixed critical bug preventing plugin activation and improved initialization sequence.

Bug Fix:
- Fixed fatal error: "Class 'WC_Settings_Page' not found" in Settings.php:15
- Root cause: Plugin initialized on 'plugins_loaded' before WooCommerce classes loaded
- Changed initialization hook from 'plugins_loaded' to 'woocommerce_loaded'
- Settings class now extends WC_Settings_Page without errors

Settings Integration:
- Settings page properly integrates as "Composable Products" tab in WooCommerce > Settings
- Tab appears after WooCommerce core tabs (Products, Shipping, etc.)
- All settings fields render correctly:
  - Default Selection Limit (number input)
  - Default Pricing Mode (select dropdown)
  - Display options (checkboxes for images, prices, total)

Technical Details:
- Using woocommerce_loaded hook ensures WC_Settings_Page class is available
- Prevents race condition during plugin initialization
- Settings class registration via woocommerce_get_settings_pages filter works correctly
- No breaking changes to existing functionality

Version bumped to 1.0.1 with updated CHANGELOG.md documenting the fix.

Tested: Plugin now activates without errors and settings tab appears correctly.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:31:21 +01:00
magdevandClaude Sonnet 4.5 1edb0be3d9 Initial implementation of WooCommerce Composable Products plugin
Implemented custom WooCommerce product type allowing customers to build their own
product bundles by selecting from predefined sets of products.

Features:
- Custom "Composable Product" type with admin interface
- Product selection by category, tag, or SKU
- Configurable selection limits (global and per-product)
- Dual pricing modes: fixed price or sum of selected products
- Modern responsive frontend with Twig templates
- AJAX add-to-cart functionality
- Full internationalization support (.pot file)
- WooCommerce settings integration
- Comprehensive documentation

Technical implementation:
- PHP 8.3+ with PSR-4 autoloading
- Twig 3.0 templating engine via Composer
- Vanilla JavaScript with jQuery for frontend interactions
- WordPress and WooCommerce hooks for seamless integration
- Security: input sanitization, validation, and output escaping
- Translation-ready with text domain 'wc-composable-product'

Documentation:
- README.md: Project overview and features
- INSTALL.md: Installation and usage guide
- IMPLEMENTATION.md: Technical architecture
- CHANGELOG.md: Version history

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 00:38:29 +01:00