- Upgrade next from 14.2.4 to 14.2.33 (fixes critical CVEs)
- Upgrade nodemailer from 7.0.10 to 7.0.11 (fixes DoS vulnerability)
- Upgrade eslint-config-next to 14.2.33
Remaining 3 high vulnerabilities are in glob CLI tool (dev-only,
not exploitable in web context) and require Next.js 15 migration.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use isValidEmail from helpers instead of inline regex
- Fixes SonarQube Security Hotspot for DoS via backtracking
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Inscription/Connexion buttons from hero on mobile
- Simplify Participer button on mobile menu (direct link instead of dropdown)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed GTM script from afterInteractive to beforeInteractive
- Changed GA4 scripts to beforeInteractive for earlier loading
- Hardcoded IDs to avoid template literal issues
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added Google Tag Manager (GTM-WN8H6RTC) script and noscript
- Added padding-top on mobile hero to avoid header overlap
- Reduced subtitle text size on mobile for better readability
- Added Inscription/Connexion buttons on mobile for non-authenticated users
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Reduced title sizes on mobile (text-3xl to text-7xl progressive)
- Reduced subtitle sizes on mobile (text-2xl to text-6xl progressive)
- Adjusted description text size for better mobile readability
- Reduced button padding and font size on mobile
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Client page: Total Participations now uses blue-600/blue-100
- History page: Total stat card now uses blue-600/blue-100
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed Réclamés stat card on history page from green to primary
- Changed Réclamés filter button from green to primary
- Unified Gains réclamés on client page to use primary-600
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace hex colors with primary/secondary/beige Tailwind classes
- Update background gradient to use beige colors
- Update buttons to use primary green theme
- Update statistics cards with primary/secondary colors
- Update table headers and borders
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add activeClients and inactiveClients to AdminStatistics type
- Add pie chart showing client status (active/inactive)
- Add detailed stats rows for active/inactive clients
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update theme.test.ts to expect primary/secondary colors instead of blue/yellow/green
- Update PrizeCard.test.tsx to expect beige-300 and primary-500 border classes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update employee layout with off-white sidebar and logo
- Add mobile responsive menu
- Simplify header with UserDropdown only
- Redesign verification page with admin-style design
- Change employee avatar to blue color
- Remove unused stats cards
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update sidebar and header with off-white (#faf8f5) background
- Add ticket stats endpoint integration for global counts
- Redesign tirages page with animation and improved layout
- Add red accent color for admin avatar
- Update various button styles and remove unnecessary elements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add gradient header with dark blue theme
- Improve stat cards with gradient backgrounds and decorative circles
- Update period filter with modern button styling
- Improve city cards with gradient rank badges
- Better hover effects and transitions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use Number() to ensure proper addition instead of string concatenation
- Fix stockRemaining calculation for individual prize cards
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add toLocaleString('fr-FR') for all stats numbers
- Fix stock display formatting in prize cards
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PrizeManagement (Lots & Prix):
- Add stats cards (Total, Stock, Distribués, Taux)
- Modern card design with gradient headers per prize type
- Stock progress bars and better layout
Marketing Data:
- Improved stat cards with gradient backgrounds
- Modern chart containers with icon badges
- Enhanced export section with gradient header
Tirages:
- Improved existing draw alert with grid layout
- Modern participants table with avatars
- Enhanced draw result display with cards
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add gradient backgrounds and modern styling to all admin pages
- Add Statut des Tickets donut chart
- Add Types d'Utilisateurs donut chart
- Update headers and card containers with consistent design
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Reorder sidebar: Dashboard first, then Validation des Tickets
- Add gradient backgrounds and modern card designs
- Replace emojis with SVG icons in statistics cards
- Add avatars with initials for client display
- Improve action cards with colored gradients (green, purple, slate)
- Style search sections with gradient backgrounds
- Add hover effects and transitions
- Remove value display from prize details (already in name)
- Improve filter buttons with gradient when active
- Add zebra striping and better table styling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add CHECK_EMAIL endpoint to constants
- Check email availability on blur
- Show validation status (loading, valid, exists)
- Block submission if email already exists
- Display DNS MX validation result
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add reCAPTCHA v2 to registration form
- Add reset-password page for password recovery
- Fix forgot-password to call real API
- Sort employee pending tickets (most recent first)
- Update contest dates (validation: Dec 1-31, recovery: Dec 1 - Jan 31)
- Update draw date to Feb 1, 2026
- Improve GamePeriod and GrandPrize components design
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add reset-password page to handle password reset flow
- Fix forgot-password to call real API
- Update contest dates (validation: Dec 1-31, recovery: Dec 1 - Jan 31)
- Update draw date to Feb 1, 2026
- Improve GamePeriod and GrandPrize components design
- Remove "livré chez vous" text
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- SonarQube analysis runs first for code quality
- Tests run after for code validation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Tests now run sequentially before SonarQube (not in parallel)
- Coverage report is stashed and passed to SonarQube stage
- SonarQube will now see actual test coverage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Homepage: new title styling, centered hero section, animated button
- Homepage: removed countdown timer, added white background to sections
- Login page: moved social buttons below forgot password link
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Align frontend pipeline structure with backend:
- Parallel execution of Lint & Tests and SonarQube
- Same stage naming and organization
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The tests and SonarQube were running in parallel in separate
Docker containers. This meant SonarQube never had access to
the coverage/lcov.info file generated by Jest.
Changes:
- Run Lint & Tests stage first
- Stash coverage report after tests
- Run SonarQube stage after, unstashing coverage
- Update pipeline documentation
This fix ensures SonarQube receives the actual test coverage data.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The jest.config.js was missing hooks/, contexts/, and lib/
directories from collectCoverageFrom, causing 0% coverage
to be reported for these files in SonarQube.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add tests for exportToCSV, exportToJSON, and formatDateForExport
covering file download, date formatting, and edge cases.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixes ESLint react/display-name error by adding displayName
property to the MockLink component in the jest mock.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add tests for useClickOutside hook
- Add tests for UserDropdown component
- Add tests for TicketPrizeDisplay component
- Add tests for TicketTableRow component
- Increase test count from 181 to 222
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace inline pagination in TicketManagement with Pagination component
- Replace inline pagination in UserManagement with Pagination component
- Reduces duplication from 2.8% to 2.49%
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create TicketPrizeDisplay component for prize icon rendering
- Create TicketTableRow component for reusable ticket table rows
- Refactor client/page.tsx and historique/page.tsx to use shared components
- Reduces code duplication from 3.07% to 2.8%
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>