Add Dockerfile.ci with PHP 8.3, Composer, and GD extension pre-installed. Update workflow to use this custom image instead of rebuilding environment on each run.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Move system dependencies installation before checkout step to ensure git is available when needed. Also add curl to dependencies for Composer installation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Use php:8.3-cli instead of composer:latest to ensure PHP version compatibility (8.1-8.4 required). Install GD extension and required system dependencies for image manipulation packages.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Extract logic into dedicated functions for better readability
- Create handleDonationIntervalChange() as main click handler
- Separate concerns: updateLinkInterval, updateAmountDisplay, switchActiveTab
- Remove unnecessary comments in favor of clear function names
- Update footer to link script.js instead of donation-tabs.js
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Donorbox configuration in site/config/config.php with API settings
- Create controller for support page to fetch campaign data from API
- Update support.php template with dynamic donation buttons and gauge
- Transform static buttons into dynamic links with proper URL parameters
- Add JavaScript for tab switching between one-time and monthly donations
- Calculate donation percentage and display real-time campaign stats
The donation buttons now link directly to Donorbox with pre-filled amounts
and intervals. API integration is ready but requires API key configuration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Update admin menu configuration to use the correct page slug 'soutien' instead of 'support'.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>