- Add retry configuration to CoolifyTask (3 tries, 600s timeout)
- Add retry configuration to ScheduledTaskJob (3 tries, configurable timeout)
- Add retry configuration to DatabaseBackupJob (2 tries)
- Implement exponential backoff for all jobs (30s, 60s, 120s intervals)
- Add failed() handlers with comprehensive error logging to scheduled-errors channel
- Add execution tracking: started_at, retry_count, duration (decimal), error_details
- Add configurable timeout field to scheduled tasks (60-3600s, default 300s)
- Update UI to include timeout configuration in task creation/editing forms
- Increase ScheduledJobManager lock expiration from 60s to 90s for high-load environments
- Implement safe queue cleanup with restart vs runtime modes
- Restart mode: aggressive cleanup (marks all processing jobs as failed)
- Runtime mode: conservative cleanup (only marks jobs >12h as failed, skips deployments)
- Add cleanup:redis --restart flag for system startup
- Integrate cleanup into Dev.php init() for development environment
- Increase scheduled-errors log retention from 7 to 14 days
- Create comprehensive test suite (unit and feature tests)
- Add TESTING_GUIDE.md with manual testing instructions
Fixes issues with jobs failing after single attempt and "attempted too many times" errors
The `custom_network_aliases` field was being displayed as an array, which caused rendering issues. This change converts the array to a comma-separated string when syncing from the model to ensure it's displayed correctly in the UI.
- Add Alpine.js reactive height calculation based on viewport size
- Monaco editor now responds to window resize events
- Fix Livewire component structure by moving style tag inside root div
- Update CLAUDE.md to document critical single root element requirement
- Set minimum editor height of 300px with responsive maximum
- Use CSS custom properties to pass calculated height to components
When creating a Hetzner server from the onboarding view, the redirect
to the server details page was not working properly due to modal context.
The standard redirect() call doesn't handle navigation from within modals.
Changes:
- Add from_onboarding flag to ByHetzner component
- Use wire:navigate redirect when in onboarding mode
- Pass from_onboarding=true from boarding view
This ensures proper navigation to the newly created server page instead
of staying on the onboarding view.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add affiliate link when users add their first Hetzner token
- Shows in both modal and full-page layouts
- Friendly messaging about supporting Coolify and getting credits
- Removed unnecessary environment variables and added security settings for Elasticsearch and Kibana.
- Implemented password setup for the kibana_system user during the Kibana setup process.
- Updated healthcheck commands for both services to ensure proper monitoring and readiness.
- Introduced a new setup service for Kibana to streamline user password configuration.
- Implemented logic to retrieve and display the default user password for Elasticsearch in the extraFields method of the Service model.
- Enhanced data collection for environment variables related to Elasticsearch, improving service configuration management.
- Enhanced environment variable configuration for the server and web services, including database and encryption settings.
- Updated health check intervals and retries for better reliability.
- Changed MinIO service configuration to use port 9000 and adjusted health checks accordingly.
- Improved volume management for data persistence.
These changes aim to streamline the deployment process and ensure better service health monitoring.
- Change MinIO image from 'minio/minio:latest' to 'quay.io/minio/minio:latest'
This matches the official Coolify MinIO template for consistency
- Update health check from curl-based to 'mc ready local' command
This is more reliable and matches the official MinIO template
- Update health check intervals and retries to match official template
(interval: 5s, timeout: 20s, retries: 10)
- Update service templates JSON files with corrected configuration
Addresses @devdilson's feedback about MinIO configuration consistency
with existing Coolify templates and best practices.
- Fix MinIO endpoint configuration to use SERVICE_URL_MINIO_3200 for public access
This resolves the issue with signed URLs for photo uploads as noted by @devdilson
- Add ENTE_INTERNAL_ADMIN environment variable to grant first account admin permissions
This prevents the 10GB storage limit issue mentioned in the review
- Update service templates JSON files with the corrected configuration
- Ensure MinIO service has proper SERVICE_URL configuration for external access
Addresses all feedback from @devdilson's review comments:
- Fixes signed URL access for photo uploads
- Grants admin permissions to first account
- Maintains proper service architecture for Coolify deployment
- Add ente-photos.yaml template with museum, postgres, and minio services
- Add custom SVG logo for Ente Photos
- Update service templates JSON files with new template
- Updated Appwrite service template to use the latest version of the compose configuration.
- Adjusted the `_APP_CONSOLE_HOSTNAMES` environment variable to remove the default values, allowing for more flexible hostname configuration.
- Updated the Appwrite compose file to reflect these changes.
This ensures better customization for users deploying Appwrite services.