Remove flex items-center from blog post content container that was causing
content elements to display horizontally instead of their natural vertical
flow. This ensures proper text and element stacking within individual
blog posts.
Fixes layout issue in resources/views/livewire/blog.blade.php
- Add comprehensive OxaPay payment provider with invoice creation, webhook processing, and subscription status sync
- Implement conditional payload fields (to_currency, callback_url) based on configuration
- Create universal sync command for all non-recurring payment providers
- Add subscription model fields for payment tracking
- Implement proper status mapping between OxaPay and Laravel subscription states
- Add webhook signature validation using HMAC SHA512
- Fix bulk delete and individual delete actions using before() hook with halt()
- Add daily/weekly billing cycle options to plan resource and Polar provider
- Enhance payment confirmation with dynamic polling and loading states
- Add graceful handling for deleted plans in subscription display
- Update Polar provider to support dynamic billing cycles
- Add Polar-specific date field mapping in PaymentOrchestrator (current_period_start, current_period_end, cancelled_at, trial_end)
- Handle both cancellation scenarios: cancel_at_period_end=true and existing cancelled_at timestamp
- Map customer_cancellation_reason and customer_cancellation_comment from Polar to database
- Update billing page to show correct renewal vs expiry dates based on cancellation status
- Restrict cancel button to activation_key provider only (Polar uses customer portal)
- Fix button spacing between "Manage in Polar" and "Sync" buttons
- Ensure both "Sync" and "Recheck Status" buttons use identical sync functionality
- Add comprehensive billing page with current subscription display and transaction history
- Integrate Polar.sh customer portal for subscription management
- Fix Polar API endpoint from /customer-portal to /customer-sessions
- Use Polar's direct customer_portal_url response for seamless redirect
- Add responsive button layout with cursor-pointer styling
- Implement human-readable timestamps using diffForHumans()
- Add subscription sync functionality with 30-minute recheck window
- Include subscription cancellation with modal confirmation
- Support activation key provider with pending activation display
- Add proper error handling and user feedback messages
- Create PaymentCancelController with authentication and subscription detection
- Design responsive cancellation view with red/orange gradient theme
- Add session token logging and recent subscription lookup functionality
- Update payment cancel route to use new controller with auth middleware
- Include security assurances and proper navigation to checkout/dashboard
- Remove broken route references and ensure all buttons link to valid pages
- Add PaymentSuccessController with authentication and subscription selection logic
- Create PaymentConfirmation Livewire component with polling mechanism
- Implement real-time subscription status verification via Polar provider API
- Add confetti animation for successful payment confirmation
- Design responsive payment success page with dark mode support
- Fix Polar provider field mapping (updated_at -> modified_at)
- Add comprehensive error handling and logging
- Support multiple subscription status states (verifying, activated, pending, error)
- Implement automatic polling with 30-second intervals (max 5 attempts)
- Add fallback redirects and user-friendly status messages
- Replace hardcoded provider-specific buttons with dynamic database-driven approach
- Update getPlanProviders() to include display_name from payment_providers table
- Simplify plan-card.blade.php with single if/else logic for all providers
- Move trial button outside loop and comment for future implementation
- Use "Pay with {display_name}" pattern for consistent button text
- Maintain special handling for activation_key provider with disabled state
- Add unified payment provider architecture with contract-based design
- Implement 6 payment providers: Stripe, Lemon Squeezy, Polar, Oxapay, Crypto, Activation Keys
- Create subscription management with lifecycle handling (create, cancel, pause, resume, update)
- Add coupon system with usage tracking and trial extensions
- Build Filament admin resources for payment providers, subscriptions, coupons, and trials
- Implement payment orchestration service with provider registry and configuration management
- Add comprehensive payment logging and webhook handling for all providers
- Create customer analytics dashboard with revenue, churn, and lifetime value metrics
- Add subscription migration service for provider switching
- Include extensive test coverage for all payment functionality
- Update app.blade.php to access menu properties using array syntax
- Update home.blade.php to access blog properties using array syntax
- Fixes "Attempt to read property on array" errors after cache conversion
- Upgrade Filament framework from v3 to v4
- Update all Filament resources and pages for v4 compatibility
- Fix test suite to maintain 100% pass rate (321 tests passing)
- Add visibility condition for ticket close action (only when not closed)
- Update dependencies and build assets for new Filament version
- Maintain backward compatibility while leveraging v4 improvements
- Fix Laravel bootstrap issues in TestCase setup
- Add missing database factories (Setting, PremiumEmail, ActivationKey, etc.)
- Convert Pest tests to PHPUnit style for compatibility
- Fix model relationships and boolean casts
- Add missing Filament resource actions and filters
- Fix form validation and test data mismatches
- Resolve assertion parameter order issues
- Add proper configuration for test views
- Fix searchable columns and table sorting
- Simplify complex filter assertions for stability