Commit graph

499 commits

Author SHA1 Message Date
Andras Bacsai
ad7479b167 fix: set cloud-init script dropdown to empty by default
Remove 'selected' and 'disabled' attributes from the placeholder option
to ensure the dropdown shows "Load saved script..." by default instead
of appearing to select the first script.

When selected_cloud_init_script_id is null, the empty option will be
shown. The updatedSelectedCloudInitScriptId() method already handles
empty string values correctly by checking if ($value).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 11:25:42 +02:00
Andras Bacsai
6c0840d4e0 refactor: improve cloud-init script UX and remove description field
Changes:
1. Remove description field from cloud-init scripts
   - Updated migration to remove description column
   - Updated model to remove description from fillable array

2. Redesign script name input layout
   - Move script name input next to checkbox (always visible)
   - Remove conditional rendering - input always shown
   - Use placeholder instead of label for cleaner look

3. Fix dropdown type error
   - Replace wire:change event with wire:model.live
   - Use updatedSelectedCloudInitScriptId() lifecycle hook
   - Add "disabled" attribute to placeholder option
   - Properly handle empty string vs null in type casting

4. Improve validation
   - Require both script content AND name for saving
   - Remove description validation rule
   - Add selected_cloud_init_script_id validation

5. Auto-populate name when loading saved script
   - When user selects saved script, auto-fill the name field

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 11:16:28 +02:00
Andras Bacsai
e4bf8ab337 refactor: enable cloud-init save checkbox at all times with backend validation
Remove the disabled state from the save checkbox to allow users to check it
at any time. The backend already validates that cloud_init_script is not
empty before saving (line 499 in ByHetzner.php), so empty/null scripts
will simply not be saved even if the checkbox is checked.

This improves UX by making the checkbox always interactive while maintaining
data integrity through backend validation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 10:59:26 +02:00
Andras Bacsai
05bd57ed51 refactor(ui): improve cloud-init script save checkbox visibility and styling
Changes:
- Make save checkbox visible by default (not conditionally rendered)
- Disable checkbox when cloud_init_script is empty
- Auto-enable when user types in the script textarea (via Livewire reactivity)
- Remove unnecessary border wrapper around checkbox for cleaner look
- Checkbox styling now matches other checkboxes in the form (no border)

This improves UX by making the save option always discoverable while
preventing users from checking it when there's no script to save.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 10:55:14 +02:00
Andras Bacsai
7061eacfa5 feat: add cloud-init script support for Hetzner server creation
This commit adds the ability to use cloud-init scripts when creating Hetzner servers through the integration. Users can write custom scripts that will be executed during server initialization, and optionally save these scripts at the team level for future reuse.

Key features:
- Textarea field for entering cloud-init scripts (bash or cloud-config YAML)
- Checkbox to save scripts for later use at team level
- Dropdown to load previously saved scripts
- Scripts are encrypted in the database
- Full validation and authorization checks
- Comprehensive unit and feature tests

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 19:37:16 +02:00
Andras Bacsai
b48db997d6 feat: add pricing display to Hetzner server creation button
Display the monthly cost on the "Buy & Create Server" button
to give users clear visibility of the price before purchasing.

- Add computed property to calculate selected server's monthly price
- Update button text to show price dynamically (e.g., "€12.99/mo")
- Add tests for price formatting and edge cases
- Price updates reactively when user changes server type

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 18:50:44 +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
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
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
2e21d875af feat: implement ValidHostname validation rule and integrate it into server creation process 2025-10-10 11:03:13 +02:00
Andras Bacsai
2bca22082c feat: add retry functionality for server validation process 2025-10-10 10:13:08 +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
bf5c08d071 work work on hetzner integration 2025-10-09 16:54:13 +02:00
Andras Bacsai
704ddf2968 improved hetzner features 2025-10-09 12:53:57 +02:00
Andras Bacsai
215301fa8f basics of adding / removing hetzner servers 2025-10-09 10:41:29 +02:00
Andras Bacsai
c1bcc41546 init of cloud providers 2025-10-08 20:47:50 +02:00
Andras Bacsai
201e30e849 feat(project): enhance project index with resource creation capabilities
- Added logic to determine if the user can create resources for each project and generate the corresponding route for adding resources based on the project's first environment.
- Updated the project index view to display the new resource creation option alongside existing project settings.
- Adjusted various views to include a margin-top adjustment for better layout consistency.
2025-10-07 17:17:31 +02:00
Andras Bacsai
6de181222d fix(ui): correct HTML structure and improve clarity in Docker cleanup options 2025-09-29 14:44:39 +02:00
Andras Bacsai
a20f4ffe65 refactor(security): streamline update check functionality and improve UI button interactions in patches view 2025-09-25 11:50:06 +02:00
Andras Bacsai
47b060e291 refactor(ui): improve styling and consistency in environment variable warning and docker cleanup components 2025-09-25 11:45:07 +02:00
Andras Bacsai
3477bbb240
Update resources/views/livewire/server/docker-cleanup.blade.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-25 11:40:23 +02:00
Andras Bacsai
12afc1d6b6
Update resources/views/livewire/server/docker-cleanup.blade.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-25 11:38:56 +02:00
Andras Bacsai
facba28e0a refactor(ui): replace warning and error divs with callout components for improved consistency and readability 2025-09-25 11:14:56 +02:00
Andras Bacsai
bce6b087c6
Merge pull request #6671 from ShadowArcanist/shadow/docker-cleanup-visual-improvements
chore(ui): improve docker cleanup page
2025-09-25 09:52:17 +02:00
Andras Bacsai
1a2783ccc9
Merge pull request #6675 from ShadowArcanist/shadow/security-terminal-access
chore(ui): move terminal access settings to security page
2025-09-25 09:50:57 +02:00
Andras Bacsai
69c36e6333 refactor(server): update dispatch messages and streamline data synchronization 2025-09-23 08:49:11 +02:00
ShadowArcanist
1733b210ed Cleaned up Terminal Access page (visual improvements) 2025-09-23 09:26:17 +05:30
ShadowArcanist
299db159cb Moved terminal access settings to security page 2025-09-23 06:32:51 +05:30
ShadowArcanist
dc8398ada8 Cleaned up docker cleanup page 2025-09-22 23:56:08 +05:30
Andras Bacsai
e4b7b454cc style(proxy): adjust padding in proxy configuration form for better visual alignment 2025-09-22 09:54:59 +02:00
Andras Bacsai
e2c5caf78c refactor(proxy): streamline proxy configuration form layout and improve button placements 2025-09-22 09:54:29 +02:00
Andras Bacsai
7549b432ef
Merge branch 'next' into shadow/fix-typo-slash-proxy-page 2025-09-22 09:49:59 +02:00
Andras Bacsai
5933df2ed4
Merge pull request #6667 from ShadowArcanist/shadow/proxy-visual-improvements
chore(ui): improve proxy configuration page
2025-09-22 09:48:19 +02:00
ShadowArcanist
4ea4846124 Moved Proxy config reset button from bottom of the editor to next to the proxy name 2025-09-22 00:26:08 +05:30
ShadowArcanist
24fdac624d Improved spacing between titles on proxy configuration page 2025-09-22 00:15:02 +05:30
ShadowArcanist
11878bcf5d Added (Coolify Proxy) to the proxy name on Configuration page
New users can easily understand Traefik or Caddy is being used as the Coolify proxy
2025-09-22 00:09:49 +05:30
ShadowArcanist
9da54bc94f Added description text on Proxy configuration title 2025-09-22 00:05:26 +05:30
ShadowArcanist
8c005435b5 Added confirmation modal for switching proxies 2025-09-21 23:59:46 +05:30
ShadowArcanist
eab9f91879 Fixed incorrect proxy config file path on ui 2025-09-21 20:20:32 +05:30
ShadowArcanist
cb7fbe9a71 Renamed metrics titles CPU(%) to CPU usage - same for memory 2025-09-19 23:19:24 +05:30
ShadowArcanist
ee40fa0bef Added proper labels for Y axis data on metrics graphs 2025-09-19 23:14:15 +05:30
ShadowArcanist
20c57cde78 Enabled animations for metrics graphs 2025-09-19 22:59:31 +05:30
ShadowArcanist
ac577b076e Fixed typo on server metrics description 2025-09-19 22:57:54 +05:30
ShadowArcanist
0ef0247e14 Improved metrics graph tooltip to show usage in a better way and added timestamp to the tooltip 2025-09-19 22:40:08 +05:30
ShadowArcanist
65f24de101 Changed Sentinel metrics color from yellow to blue + cyan (cpu + memory) 2025-09-19 16:26:11 +05:30
Andras Bacsai
e4c3389e12 feat(sentinel): add slide-over for viewing Sentinel logs and custom Docker image input for development 2025-09-14 19:22:03 +02:00
Andras Bacsai
1ca94b90da fix(proxy): replace CheckConfiguration with GetProxyConfiguration and SaveConfiguration with SaveProxyConfiguration for improved clarity and consistency in proxy management 2025-09-09 12:52:19 +02:00
Andras Bacsai
63fcc0ebc3 feat(acl): Change views/backend code to able to use proper ACL's later on. Currently it is not enabled. 2025-08-26 10:27:38 +02:00
Andras Bacsai
6772cfe603 feat(auth): implement authorization for Docker and server management
- Added authorization checks in Livewire components related to Docker and server management to ensure only authorized users can create, update, and manage Docker instances and server settings.
- Introduced new policies for StandaloneDocker and SwarmDocker to define access control rules based on user roles and team associations.
- Updated AuthServiceProvider to register the new policies, enhancing security and access control for Docker functionalities and server management operations.
2025-08-22 14:04:25 +02:00