Commit graph

15009 commits

Author SHA1 Message Date
Andras Bacsai
fe42773c47 chore: update package-lock.json
Auto-generated changes from pre-commit hooks.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:42:33 +02:00
Andras Bacsai
0303f529d3 feat: add UUIDs and URLs to webhook notifications
- Add resource UUIDs (application_uuid, database_uuid, server_uuid, task_uuid) to all webhook notifications
- Standardize URL field naming from various formats (resource_url, task_url, server_url) to consistent 'url' field
- Include parent resource UUIDs for scheduled tasks (application_uuid or service_uuid)
- Add direct URLs to Coolify resources for all notification types
- Update UI to show "Webhook URL (POST)" label for clarity

This enables webhook consumers to:
- Uniquely identify resources using UUIDs used throughout Coolify UI
- Directly link back to Coolify resource pages via the url field

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:41:46 +02:00
Andras Bacsai
36573ecbf0 fix: use correct property declaration for withinTransaction
The parent Migration class defines $withinTransaction without a type
hint. Setting it without redeclaring (no "bool" type) avoids the PHP
8.4 error: "Type of Migration::$withinTransaction must not be defined"

This is the proper Laravel way to disable transactions for migrations
that need to run CREATE INDEX CONCURRENTLY in PostgreSQL.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:41:33 +02:00
Andras Bacsai
e256e765e7 fix: properly handle transaction for concurrent index operations
Instead of redefining the $withinTransaction property (which causes
a type error), we now manually commit the transaction before running
CREATE INDEX CONCURRENTLY and begin a new transaction afterward.

This ensures PostgreSQL can execute the concurrent index operations
while maintaining transaction safety for subsequent migrations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:39:40 +02:00
Andras Bacsai
3501d200d3 Merge branch 'next' into fix-activity-log-index-transaction 2025-10-10 18:38:16 +02:00
Andras Bacsai
084e65f132 fix(docker-compose): set pull_policy to 'never' for coolify, soketi, and testing-host services 2025-10-10 18:37:59 +02:00
Andras Bacsai
9c2ef0aa21 fix(migration): disable transaction for concurrent index creation
PostgreSQL does not allow CREATE INDEX CONCURRENTLY to run inside a
transaction block. This migration now sets $withinTransaction = false
to allow the concurrent index creation to succeed.

Fixes the error: "CREATE INDEX CONCURRENTLY cannot run inside a
transaction block" when running migrations in dev environment.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:31:39 +02:00
Andras Bacsai
bd6b597b09
Merge pull request #6840 from coollabsio/andrasbacsai/hetzner-ipv4-ipv6-config
feat: add IPv4/IPv6 network configuration for Hetzner server creation
2025-10-10 18:30:24 +02:00
Andras Bacsai
bdffa4704d fix: use btn-primary for POST badge background
Changed POST badge from btn-warning to btn-primary to match other button styling.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:24:00 +02:00
Andras Bacsai
0603acfc43 fix: move POST badge before input field
Repositioned POST badge to appear before the webhook URL input field.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:23:11 +02:00
Andras Bacsai
7069236714 feat: add IPv4/IPv6 network configuration for Hetzner server creation
Add support for configuring IPv4 and IPv6 public network interfaces when creating servers through the Hetzner integration. Users can now enable or disable IPv4 and IPv6 independently, with both enabled by default.

Features:
- Added enable_ipv4 and enable_ipv6 checkboxes in the server creation form
- Both options are enabled by default as per Hetzner best practices
- IPv4 is preferred when both are enabled
- Fallback to IPv6 when only IPv6 is enabled
- Proper validation and error handling for network configuration
- Comprehensive test coverage for IP address selection logic

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:22:25 +02:00
Andras Bacsai
4b5c641d1b refactor: reposition POST badge as button
Moved POST badge to align at the end of the input field and styled it as a button.

Changes:
- Changed flex container from items-start to items-end
- Removed nested div wrapper around input
- Styled POST badge as a button (btn btn-sm btn-warning)
- Used proper button padding and sizing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:22:18 +02:00
Andras Bacsai
769d2eca35 feat: improve webhook URL field UI
Made webhook URL a password field for security and added POST badge indicator.

Changes:
- Changed webhook URL input type from "url" to "password"
- Added POST badge to indicate HTTP method used for webhook delivery
- Improved layout with flex container for badge and input

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:19:10 +02:00
Andras Bacsai
556d93ecb8 refactor: remove SendsWebhook interface
Simplified webhook channel implementation to match TelegramChannel pattern without typed interface.

Changes:
- Removed SendsWebhook interface file
- Removed interface from Team model
- Removed routeNotificationForWebhook() method
- WebhookChannel now uses untyped $notifiable like TelegramChannel

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:08:37 +02:00
Andras Bacsai
dc15bee980 feat: implement actual webhook delivery with Ray debugging
Added actual HTTP POST delivery for webhook notifications and comprehensive Ray debugging for development.

Changes:
- Updated Team model to implement SendsWebhook interface
- Added routeNotificationForWebhook() method to Team
- Enhanced SendWebhookJob with Ray logging for request/response
- Added Ray debugging to WebhookChannel for dispatch tracking
- Added Ray debugging to Webhook Livewire component

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:07:04 +02:00
Andras Bacsai
413dee5d8c feat: implement actual webhook delivery
Implement full webhook delivery functionality:
- Create SendWebhookJob to handle HTTP POST requests
- Update WebhookChannel to dispatch webhook jobs
- Configure retry logic (5 attempts, 10s backoff)
- Update Test notification payload with success/message structure

Webhook payload structure:
{
  "success": true/false,
  "message": "notification message",
  "event": "event_type",
  "url": "coolify_dashboard_url"
}

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:59:17 +02:00
Andras Bacsai
729c891542 feat: add WebhookChannel placeholder implementation
Add basic WebhookChannel infrastructure:
- Create SendsWebhook interface
- Create WebhookChannel with placeholder implementation (logs instead of sending)
- Update Test notification to support webhook channel
- Add WebhookChannel to HasNotificationSettings trait
- Add toWebhook() method to Test notification

This provides a working foundation that won't break test notifications.
The actual HTTP webhook delivery will be implemented in a follow-up.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:57:10 +02:00
Andras Bacsai
22153c419d feat: add webhook placeholder to Test notification
Add webhook case to the Test notification's via() method
to prepare for future WebhookChannel implementation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:55:11 +02:00
Andras Bacsai
22ef6c8c9a fix: add missing server_patch_webhook_notifications field
Add the server_patch_webhook_notifications column to both
the create and populate migrations to match the model and
Livewire component expectations.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:52:07 +02:00
Romain ROCHAS
4ce1c2ece7
Merge branch 'next' into fix/evolution-api-slogan 2025-10-10 17:51:09 +02:00
Andras Bacsai
eea372d702 fix: register WebhookNotificationSettings with NotificationPolicy
Add WebhookNotificationSettings to the policy mappings in
AuthServiceProvider to enable authorization checks for the
webhook notification settings.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:48:14 +02:00
Andras Bacsai
53d1ad48cd fix: populate webhook notification settings for existing teams
Add migration to create webhook notification settings records
for all existing teams. This fixes the "unauthorized" error when
accessing the webhook notifications page for teams that existed
before the webhook feature was added.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 17:47:26 +02:00
Andras Bacsai
9481247ef4 fix(conductor): update run script to include 'spin down' command 2025-10-10 17:44:17 +02:00
Andras Bacsai
eb9305df8e feat(docker-compose): add image specifications for coolify, soketi, and testing-host services 2025-10-10 17:44:01 +02:00
Andras Bacsai
606b3b56b1 fix(conductor): update run script command to 'spin up' 2025-10-10 17:28:37 +02:00
Andras Bacsai
655e5a011a feat(conductor): add run script and update runScriptMode configuration 2025-10-10 16:07:51 +02:00
Andras Bacsai
4834ff27d1 fix(conductor-setup): update script permissions for execution 2025-10-10 16:06:30 +02:00
Andras Bacsai
840c16246d feat(conductor): add setup script and configuration file 2025-10-10 16:03:22 +02:00
Andras Bacsai
3c74620f36 feat: add modal support for creating private keys in server creation form and enhance UI for private key selection 2025-10-10 15:53:17 +02:00
Andras Bacsai
b28875c612 fix: update cloud provider token form with improved placeholder and guidance for API token creation 2025-10-10 15:40:20 +02:00
Andras Bacsai
a90236ed60 feat: enhance datalist component with unified input container and improved option handling 2025-10-10 15:40:15 +02:00
Andras Bacsai
27879377a0 feat: add custom webhook notification support
Add basic infrastructure for custom webhook notifications:
- Create webhook_notification_settings table with event toggles
- Add WebhookNotificationSettings model with encrypted URL
- Integrate webhook settings into Team model and HasNotificationSettings trait
- Create Livewire component and Blade view for webhook configuration
- Add webhook navigation route and UI

This provides the foundation for sending webhook notifications to custom HTTP/HTTPS endpoints when events occur in Coolify.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 15:37:00 +02:00
Romain ROCHAS
21fbc3bad8 fix(n8n): add DB_SQLITE_POOL_SIZE environment variable for configuration 2025-10-10 14:34:23 +02:00
Romain ROCHAS
9c4114e9fa fix(template) update n8n with new required env + image version 2025-10-10 14:28:18 +02:00
ShadowArcanist
8e954a3451
Set static version number for documenso service 2025-10-10 16:41:06 +05:30
ShadowArcanist
ac26fbe675
Added resend api env for documenso service 2025-10-10 16:37:35 +05:30
Andras Bacsai
ac3af8a882 feat: add support for selecting additional SSH keys from Hetzner in server creation form 2025-10-10 12:17:05 +02:00
Andras Bacsai
ee211526ea fix: improve placeholder text for token name input in cloud provider token form 2025-10-10 11:38:35 +02:00
Andras Bacsai
2e21d875af feat: implement ValidHostname validation rule and integrate it into server creation process 2025-10-10 11:03:13 +02:00
Andras Bacsai
bd88bbca5b fix: streamline proxy status handling in StartProxy and Navbar components 2025-10-10 10:41:58 +02:00
Andras Bacsai
9c152fd40a feat: add retry mechanism with rate limit handling to API requests in HetznerService 2025-10-10 10:41:37 +02:00
Andras Bacsai
5362952e2a fix: correct dispatch logic for Hetzner server status refresh in checkHetznerServerStatus method 2025-10-10 10:13:14 +02:00
Andras Bacsai
2bca22082c feat: add retry functionality for server validation process 2025-10-10 10:13:08 +02:00
Andras Bacsai
00cb06150e fix: improve error logging and handling in ServerConnectionCheckJob for Hetzner server status 2025-10-10 10:12:59 +02:00
Andras Bacsai
32b53d756a feat: enhance proxy status notifications with detailed messages for various states 2025-10-10 09:37:05 +02:00
Andras Bacsai
513f6b54f7 feat: implement Hetzner deletion failure notification system with email and messaging support 2025-10-10 09:35:58 +02:00
Andras Bacsai
bbaef03602 fix: update Hetzner server status handling to prevent unnecessary database updates and improve UI responsiveness 2025-10-10 09:35:54 +02:00
Andras Bacsai
77dcabe51c fix: refresh server data before showing notification to ensure accurate proxy status 2025-10-10 09:35:49 +02:00
Blue Mouse
d16b6e9378 Bump Swetrix base version to v4.0.4 2025-10-10 01:40:53 +01:00
Andras Bacsai
f4e5c195fe refactor: replace direct SslCertificate queries with server relationship methods for consistency 2025-10-09 17:00:05 +02:00