21 Commits

Author SHA1 Message Date
12388af5a0 Document Session 13: v1.1.11-v1.1.13 variable product support journey
Added comprehensive session history covering:
- v1.1.11: Initial variable product support attempt
- v1.1.12: Fixed variation retrieval method + packaging
- v1.1.13: Removed overly strict stock filtering

Key learnings documented:
- Use get_children() not get_available_variations()
- Don't filter by is_in_stock() during retrieval
- Stock management is multi-layered (retrieval, display, validation)
- WooCommerce stock states (purchasable vs in_stock)
- Debug by elimination approach

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-01 02:02:56 +01:00
c39c13ffed more info about the admin rendering bug, style corrections 2025-12-31 23:33:19 +01:00
8185a77697 Document v1.1.10 session history in CLAUDE.md
Added comprehensive Session 12 documentation covering:
- Two critical bug fixes (admin tabs + frontend empty state)
- Root cause analysis for both issues
- CSS panel hiding solution
- Twig empty state conditional
- Translation updates for all 6 locales
- Key lessons learned about CSS timing and empty states
- Debugging approach and testing recommendations

Fixed markdown linting warnings (MD036, MD032).

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 22:43:37 +01:00
7a4a0a0135 Document v1.1.8 bug fixes in session history
Added comprehensive documentation for Session 11 covering three critical UI bug fixes:

1. Admin rendering bug - Fixed CSS specificity for proper tab visibility
2. Frontend product selector not appearing - Added woocommerce_is_purchasable filter
3. Localized price formatting - Implemented full WooCommerce price format support

Documentation includes:
- Detailed root cause analysis for each bug
- Complete code examples showing the fixes
- Links to specific file locations and line numbers
- Key lessons learned about WordPress/WooCommerce integration
- Testing recommendations for verification

Updated "Bugs found" section to mark all three issues as fixed in v1.1.8.

Added note about v1.1.6/v1.1.7 package structure fix (parent directory issue).

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 22:10:01 +01:00
c6a48d6404 Fix critical UI bugs in admin and frontend
Fixes three critical bugs reported in CLAUDE.md:

1. Admin rendering bug - Fixed CSS to prevent both General and Composable
   Options tabs from showing simultaneously on initial page load
   - Enhanced CSS specificity with !important flags
   - Added body.product-type-composable selectors for proper visibility control
   - Hides Composable Options tab by default, shows only when composable type selected

2. Frontend product selector not appearing - Fixed WooCommerce integration
   - Added hide_default_add_to_cart() method to Cart_Handler
   - Hooks woocommerce_is_purchasable filter to return false for composable products
   - This hides WooCommerce's default add-to-cart button
   - Allows our custom product selector to be the only interface

3. Localized price formatting - Implemented proper WooCommerce price formatting
   - Added wc_price Twig function in Plugin.php
   - Updated Product_Selector to pass formatted price HTML to template
   - Added price_format data to JavaScript localization
   - Implemented formatPrice() method in frontend.js
   - Supports all WooCommerce price formats (currency position, decimals, separators)
   - Template now uses {{ fixed_price_html|raw }} and {{ zero_price_html|raw }}
   - JavaScript dynamically formats prices using locale-specific settings

Technical improvements:
- Cart_Handler.php: +14 lines (hide_default_add_to_cart method)
- Plugin.php: +7 lines (wc_price function, price format localization)
- Product_Selector.php: +2 lines (formatted price HTML context)
- templates/product-selector.twig: Modified to use formatted price HTML
- assets/css/admin.css: +24 lines (enhanced tab visibility control)
- assets/js/frontend.js: +28 lines (formatPrice method with WooCommerce format support)

All PHP files pass lint checks. Frontend now properly displays localized prices
with correct currency symbols, decimal separators, and thousand separators for
all WooCommerce-supported locales (CHF for Switzerland, € for Europe, etc.).

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 22:08:08 +01:00
03a7624564 Update CLAUDE.md with release package commit information
Added post-release updates section to v1.1.7 documentation:
- Both v1.1.6 and v1.1.7 release packages now committed to repository
- v1.1.6: 378 KB with .po files only (translations won't work)
- v1.1.7: 393 KB with .po + .mo files (translations functional)
- All packages include SHA-256 and MD5 checksums

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:50:54 +01:00
63d8f9ed52 Document v1.1.7 release in CLAUDE.md session history
Added comprehensive documentation for Session 10:
- Critical bug fix: Missing translations due to lack of compiled .mo files
- Root cause analysis: WordPress requires .mo files, not just .po files
- Solution: Compiled all 6 .po files to .mo format using msgfmt
- Release details: v1.1.7 with 393 KB package, 376 files
- Key lessons: .po vs .mo files, WordPress i18n requirements, testing workflow

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:45:14 +01:00
d27dd4b7bd Document v1.1.6 release in CLAUDE.md
Added comprehensive session history for v1.1.6 including:
- Translation completion for all 6 locales
- Version bump details
- Release package creation
- Checksums and file counts
- Key lessons learned about translation maintenance

Fixed markdown linting: Added blank line before list

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:20:22 +01:00
4f65c8e5e0 Add missing admin translations for Fixed Price field
Updated all translation files with new strings from v1.1.4:
- Simplified "How to calculate the price" description
- New "Fixed Price" field label
- New "Enter the fixed price for this composable product" description

Translations added to all 6 locales:
- de_DE (German formal): Festpreis / Geben Sie den Festpreis ein
- de_DE_informal (German informal): Festpreis / Gib den Festpreis ein
- de_CH (Swiss German formal): Festpreis / Geben Sie den Festpreis ein
- de_CH_informal (Swiss German informal): Festpreis / Gib den Festpreis ein
- fr_CH (Swiss French): Prix fixe / Entrez le prix fixe
- it_CH (Swiss Italian): Prezzo fisso / Inserisci il prezzo fisso

All admin strings are now fully translated across all supported locales.

Updated CLAUDE.md "Bugs found" section to mark admin translation task as completed.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:12:46 +01:00
054617f320 Document v1.1.5 Twig filter bug fix in CLAUDE.md
Added comprehensive session history for v1.1.5 including:
- Root cause analysis of Twig filter vs function mismatch
- Error log evidence and backtrace analysis
- Technical solution with code examples
- Lessons learned about multi-plugin Twig compatibility
- Updated "Bugs found" section marking Twig bug as fixed

Also fixed markdown linting warnings:
- Added blank line before fenced code block
- Added language specification (text) to code fence
- Added blank line around list

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:07:20 +01:00
867abc8f63 Document v1.1.4 session: Fixed price field enhancement
Added session history for v1.1.4 which introduced:
- Fixed price field in Composable Options tab
- JavaScript toggle based on pricing mode selection
- Improved admin UX with progressive disclosure

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 21:01:52 +01:00
818fd51502 Document translation updates in CLAUDE.md v1.1.3 section 2025-12-31 17:36:54 +01:00
17d5312df3 Add releases/ directory to project structure in CLAUDE.md 2025-12-31 17:27:18 +01:00
037be97ece Update CLAUDE.md with v1.1.3 session history
Session 6 documented:
- WooCommerce HPOS compatibility implementation
- Price calculation conflict resolution
- Compatibility with WooCommerce Analytics and pricing plugins
- User confirmation: "it all works, now"

Key learnings:
- HPOS declaration is critical for modern WooCommerce
- Static flags prevent duplicate hook execution
- Cart item metadata flags for plugin cooperation
- Compatibility testing with common WC extensions

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:26:21 +01:00
8aaf30de99 Update CLAUDE.md with v1.1.1 and v1.1.2 session history
Document the critical bug fix journey for the WC_Settings_Page error:

v1.1.1 session (failed attempt):
- Attempted to fix with hook timing change
- Changed to woocommerce_init hook
- Bug persisted - error logs showed it still failed
- Lesson: Always verify fixes with error logs

v1.1.2 session (successful fix):
- Discovered root cause: Settings.php loaded too early
- require_once happened during Plugin::includes()
- PHP tried to parse 'extends WC_Settings_Page' before class existed
- Solution: Delayed require_once to add_settings_page() callback
- This callback runs when WC has loaded all settings classes

Key learnings documented:
1. Class loading order matters more than hook timing
2. Always verify fixes don't just assume they work
3. Lazy loading pattern for extending third-party classes
4. Read error logs thoroughly - backtrace reveals the sequence
5. Don't assume hook order means all classes are loaded
6. Test immediately after each release

Also documents the debugging approach that worked and the
5-version journey to finally fix this persistent issue.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 17:03:11 +01:00
7bde9e2f0c Fix Markdown formatting in CLAUDE.md (blank lines around lists)
Applied linter formatting fixes for MD032 compliance.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:48:41 +01:00
e491dadc67 Update CLAUDE.md with v1.0.1 and v1.1.0 session history
Documentation updates:
- Added v1.0.1 bug fix details (fatal error resolution)
- Comprehensive v1.1.0 stock management documentation
- Updated project structure with Stock_Manager.php
- Enhanced data flow section with order processing
- Documented all 6 key lessons learned from stock implementation
- Updated core classes section with Stock_Manager details
- Removed stock management from limitations (now implemented)

Session 4 (v1.1.0) highlights:
- New Stock_Manager class (263 lines, 6 public methods)
- 8 new translatable strings
- Visual stock indicators with color-coded badges
- Automatic stock deduction/restoration on order status changes
- Order audit trail via WooCommerce order notes
- Technical details: hooks, filters, and meta storage patterns

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:48:21 +01:00
bcbf12702e Update CLAUDE.md with v1.0.0 release documentation and session history
Enhanced documentation with comprehensive session tracking:

Translation Status Update:
- Updated from "Planned" to "Available" translations
- Marked all 6 locales as complete (✓)
- Added command for compiling .mo files from .po files
- Documented 40+ translated strings with locale-specific terminology

Session History Restructuring:
- Split v1.0.0 development into 3 distinct sessions
- Session 1: Core implementation (21 files, initial commit)
- Session 2: Documentation & translations (6 .po files, CLAUDE.md)
- Session 3: Release creation (tag, package, checksums)

Release Documentation:
- Documented release package details (371 KB)
- Added git workflow (main branch + dev branch structure)
- Listed verified functionality with checkmarks
- Updated known limitations (added .mo compilation note)
- Added release-specific details section

Statistics:
- Total files: 28 (21 PHP/templates + 7 translations)
- Total code: 3,842 lines
- Git tag: v1.0.0 on commit 8c17734
- Package verification: 336 vendor files included

This update provides complete context for future AI sessions about what was
accomplished across all three development sessions leading to v1.0.0 release.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:26:20 +01:00
8c17734836 Add complete translation files for all planned locales
Created translation (.po) files for all 6 planned locales:

German locales:
- de_DE: German (Germany, formal "Sie")
- de_DE_informal: German (Germany, informal "du")
- de_CH: German (Switzerland, formal "Sie")
- de_CH_informal: German (Switzerland, informal "du")

Swiss locales:
- fr_CH: French (Switzerland)
- it_CH: Italian (Switzerland)

All translations include:
- Complete translation of all 40+ user-facing strings
- Proper plural forms configuration
- Swiss locale examples using CHF currency formatting
- Formal/informal variants where appropriate
- Locale-specific terminology (e.g., "Artikelnummer" vs "référence")

Translation coverage:
✓ Plugin activation messages
✓ Admin settings interface
✓ Product data tab fields
✓ Frontend product selector
✓ Cart and checkout messages
✓ Error and validation messages

Ready for compilation to .mo files for production use.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:20:00 +01:00
2828f1ab25 Update CLAUDE.md with session learnings and project documentation
Enhanced CLAUDE.md with comprehensive project context for future AI sessions:

Added sections:
- Complete project structure with file descriptions
- Architecture overview with all 6 core classes
- Detailed data flow diagrams for product creation, display, and cart
- Development workflow and testing checklist
- Release creation commands
- Session history documenting v1.0.0 implementation

Key updates:
- Documented all architectural decisions made during implementation
- Added testing checklist for quality assurance
- Included known limitations and future enhancement ideas
- Created "For AI Assistants" section with session startup guide
- Updated translation section to reflect current .pot template status

This documentation will help future sessions understand:
- What was built and why
- How the system works end-to-end
- What needs testing before releases
- Areas for future improvement

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 00:41:38 +01:00
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