Commit graph

355 commits

Author SHA1 Message Date
Andras Bacsai
bf8dcac88c Move inline styles to global CSS file
Moved .log-highlight styles from Livewire component views to resources/css/app.css for better separation of concerns and reusability. This follows Laravel and Livewire best practices by keeping styles in the appropriate location rather than inline in component views.

Changes:
- Added .log-highlight styles to resources/css/app.css
- Removed inline <style> tags from deployment/show.blade.php
- Removed inline <style> tags from get-logs.blade.php
- Added XSS security test for log viewer
- Applied code formatting with Laravel Pint

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 13:15:01 +01:00
Andras Bacsai
f8146f5a59 Add log search, download, and collapsible sections with lazy loading
Features:
- Add client-side search filtering for runtime and deployment logs
- Add log download functionality (respects search filters)
- Make runtime log sections collapsible by default
- Auto-expand single container and lazy load logs on first expand
- Match deployment and runtime log view heights (40rem)
- Add debug toggle for deployment logs
- Improve scroll behavior with follow logs feature

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 10:57:58 +01:00
Andras Bacsai
d3eaae1aea Increase scheduled task timeout limit to 36000 seconds
Extended the maximum allowed timeout for scheduled tasks from 3600 to 36000 seconds (10 hours). Also passes the configured timeout to instant_remote_process() so the SSH command respects the timeout setting.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 20:04:55 +01:00
Andras Bacsai
e10bd011c5 Enable timestamps in log display and improve styling for better readability 2025-12-03 09:09:12 +01:00
Andras Bacsai
2c16727075
feat(ui): Logs color highlight based on log level (#7288) 2025-11-28 13:27:51 +01:00
Andras Bacsai
c2e1379ba8 feat: add availableSharedVariables method and enhance env-var-input component for better password handling 2025-11-27 10:23:46 +01:00
Andras Bacsai
0298ddffbd fix: ensure syncData is called with both true and false parameters in submit method 2025-11-27 09:26:54 +01:00
ShadowArcanist
0f9e3b84ee feat: logs color highlight based on log level - visual improvement 2025-11-20 09:14:42 +05:30
Andras Bacsai
c79b5f1e5c feat: add environment variable autocomplete component
Adds a new EnvVarInput component that provides autocomplete suggestions for shared environment variables from team, project, and environment scopes. Users can reference variables using {{ syntax.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 10:54:19 +01:00
Andras Bacsai
4fa0c581c8 fix(ScheduledTask): change timeout property type to int for consistency in syncData method 2025-11-11 15:30:10 +01:00
Andras Bacsai
b22e79caec feat(jobs): improve scheduled tasks with retry logic and queue cleanup
- 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
2025-11-10 11:11:18 +01:00
Andras Bacsai
faa62dec57 refactor: Remove SynchronizesModelData trait and implement syncData method for model synchronization 2025-11-04 09:18:05 +01:00
Andras Bacsai
1ab4b9aa31 refactor: simplify project data retrieval and enhance OAuth settings handling 2025-10-27 17:03:19 +01:00
Andras Bacsai
e2c254a5a8 Changes auto-committed by Conductor 2025-10-16 17:08:08 +02:00
Andras Bacsai
d4fb69ea98 fix: ensure authorization check is performed during component mount 2025-10-16 13:23:50 +02:00
Andras Bacsai
f77ad4cbd9 Complete Livewire legacy model binding migration (25+ components)
This completes the migration from Livewire's legacy `id="model.property"`
pattern to explicit properties with manual synchronization. This allows
disabling the `legacy_model_binding` feature flag.

**Components Migrated (Final Session - 9 components):**
- Server/Proxy.php (1 field)
- Service/EditDomain.php (1 field) - Fixed Collection/string bug & parent sync
- Application/Previews.php (2 fields - array handling)
- Service/EditCompose.php (4 fields)
- Service/FileStorage.php (6 fields)
- Service/Database.php (7 fields)
- Service/ServiceApplicationView.php (10 fields)
- Application/General.php (53 fields) - LARGEST migration
- Application/PreviewsCompose.php (1 field)

**Total Migration Summary:**
- 25+ components migrated across all phases
- 150+ explicit properties added
- 0 legacy bindings remaining (verified via grep)
- All wire:model, id, @entangle bindings updated
- All updater hooks renamed (updatedApplicationX → updatedX)

**Technical Changes:**
- Added explicit public properties (camelCase)
- Implemented syncData(bool $toModel) bidirectional sync
- Updated validation rules (removed model. prefix)
- Updated all action methods (mount, submit, instantSave)
- Fixed updater hooks: updatedBuildPack, updatedBaseDirectory, updatedIsStatic
- Updated Blade views (id & wire:model bindings)
- Applied Collection/string confusion fixes
- Added model refresh + re-sync pattern

**Critical Fixes:**
- EditDomain.php Collection/string confusion (use intermediate variables)
- EditDomain.php parent component sync (refresh + re-sync after save)
- General.php domain field empty (syncData at end of mount)
- General.php wire:model bindings (application.* → property)
- General.php updater hooks (wrong naming convention)

**Files Modified:** 34 files
- 17 PHP Livewire components
- 17 Blade view templates
- 1 MIGRATION_REPORT.md (documentation)

**Ready to disable legacy_model_binding flag in config/livewire.php**

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 15:38:59 +02:00
Andras Bacsai
eb1f16b62e fix(environment): clear computed property cache after adding environment variables
- Added cache clearing for environment variables and their preview after a new variable is added to ensure the UI reflects the latest data.
- Updated the refreshEnvs method to include cache clearing, enhancing the responsiveness of the environment variable display.
2025-10-07 13:57:59 +02:00
Andras Bacsai
b4cfb78f86 feat(storage): add read-only volume handling and UI notifications
- Introduced `isReadOnlyVolume` method in `LocalFileVolume` and `LocalPersistentVolume` models to determine if a volume is read-only based on Docker Compose configuration.
- Updated `FileStorage` and `Show` components to set `isReadOnly` state during mounting.
- Enhanced UI to display notifications for read-only volumes, preventing modification actions in the interface.
- Refactored file storage and directory management forms to conditionally enable or disable actions based on read-only status.
2025-10-03 20:05:43 +02:00
Andras Bacsai
ce5555ca9f feat(storage): consolidate storage management into a single component with enhanced UI
- Merged the storage management functionalities into the Storage component, replacing the previous Add component.
- Introduced new methods for submitting persistent volumes, file mounts, and directory mounts, improving code organization and maintainability.
- Enhanced the UI with modals for adding volumes, files, and directories, providing a more intuitive user experience.
- Updated validation rules and error handling for improved robustness during storage submissions.
- Removed deprecated Add component and associated views to streamline the codebase.
2025-10-01 18:46:21 +02:00
Andras Bacsai
a03c1b3b4b refactor(dashboard): remove deployment loading logic and introduce DeploymentsIndicator component for better UI management 2025-09-30 11:43:30 +02:00
ShadowArcanist
dc2929e1f7 Added info toast to let the user know to restart the app after enabling healthcheck
It only let the user know to restart if healthcheck is enabling while the app is in running state
2025-09-29 10:37:27 +05:30
ShadowArcanist
48ccfa3124 Added confirmation modal for enabling healtcheck + replaced enable checkbox with a button 2025-09-29 10:07:47 +05:30
Andras Bacsai
b1abdcee83 feat(environment-variables): implement environment variable analysis for build-time issues
- Added EnvironmentVariableAnalyzer trait to analyze and warn about problematic environment variables during the build process.
- Integrated analysis into ApplicationDeploymentJob and Livewire components to provide feedback on potential build issues.
- Introduced a new Blade component for displaying warnings related to environment variables in the UI.
2025-09-23 08:53:14 +02:00
Andras Bacsai
b1ad24eecf
Merge pull request #6657 from ShadowArcanist/shadow/metrics-visual-improvements
chore(ui): improve sentinel metrics
2025-09-22 09:46:26 +02:00
Andras Bacsai
4f71d14d39 feat(event): introduce ApplicationConfigurationChanged event to handle team-specific configuration updates and broadcast changes
feat(envs): Generate hash from secrets to invalidate docker layers
2025-09-22 09:44:30 +02:00
ShadowArcanist
ee9cf076c3 Removed debug logging for metrics 2025-09-19 23:28:25 +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
Andras Bacsai
f33df13c4e feat(environment): replace is_buildtime_only with is_runtime and is_buildtime flags for environment variables, updating related logic and views 2025-09-18 18:14:54 +02:00
Andras Bacsai
c1bee32f09 feat(deployment): introduce 'use_build_secrets' setting for enhanced security during Docker builds and update related logic in deployment process 2025-09-17 10:34:38 +02:00
Andras Bacsai
97428a4a80 feat(executions): add 'Load All' button to view all logs and implement loadAllLogs method for complete log retrieval 2025-09-15 11:05:29 +02:00
Andras Bacsai
8e155f25b3 refactor(environment): streamline environment variable handling by replacing sorting methods with direct property access and enhancing query ordering for improved performance 2025-09-12 12:09:03 +02:00
Andras Bacsai
20ad2165e7 feat(environment): introduce 'is_buildtime_only' attribute to environment variables for improved build-time configuration 2025-09-11 17:38:16 +02:00
Andras Bacsai
5b3b4bbc43 refactor(environment): remove 'is_build_time' attribute from environment variable handling across the application to simplify configuration 2025-09-11 16:51:56 +02:00
Andras Bacsai
13af4811f5 feat(storages): add method to retrieve the first storage ID for improved stability in storage display 2025-09-11 13:41:22 +02:00
Andras Bacsai
5e0b86f322
Merge pull request #6170 from mindedtech/Add-SERVICE_NAME-variable-for-docker-compose-services
Add SERVICE_NAME variable for docker compose services
2025-09-11 13:06:10 +02:00
Andras Bacsai
e74da06465 refactor(clone): consolidate application cloning logic into a dedicated function for improved maintainability and readability 2025-09-11 10:38:08 +02:00
Arnaud B
e23ab1e621
feat(deployment): add SERVICE_NAME variables for service discovery
This change introduces automatically generated `SERVICE_NAME_<SERVICE>`
environment variables for each service within a Docker Compose deployment.
This allows services to reliably reference each other by name, which is particularly
useful in pull request environments where container names are dynamically suffixed.

- The application parser now generates and injects these `SERVICE_NAME` variables
   into the environment of all services in the compose file.
- `ApplicationDeploymentJob` is updated to correctly handle and filter these
  new variables during deployment.
- UI components and the `EnvironmentVariableProtection` trait have been updated
to make these generated variables read-only, preventing accidental modification.

This commit introduces two new helper functions to standardize resource naming
for pull request deployments:

-  `addPreviewDeploymentSuffix()`: Generates a consistent suffix format (-pr-{id})
   for resource names in preview deployments
-  `generateDockerComposeServiceName()`: Creates SERVICE_NAME environment variables
   for Docker Compose services
2025-09-08 15:22:44 +02:00
Andras Bacsai
80499a03d8 feat(domains): implement domain conflict detection and user confirmation modal across application components 2025-08-28 10:52:41 +02:00
Andras Bacsai
2e85ce0e0e refactor(urls): replace generateFqdn with generateUrl for consistent URL generation across applications 2025-08-28 09:49:58 +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
ae1b0de561 feat(auth): enhance authorization checks in Livewire components for resource management 2025-08-26 10:27:38 +02:00
Andras Bacsai
adb8f9d88e feat(auth): implement authorization checks for database management 2025-08-23 18:50:35 +02:00
Andras Bacsai
40f108d6e1 feat(auth): implement authorization checks for application management 2025-08-22 16:47:59 +02:00
Andras Bacsai
e8892b3d29 feat(core): finally fqdn is fqdn and url is url. haha 2025-08-12 10:06:19 +02:00
Andras Bacsai
cc5abc093d fix(container): sort containers alphabetically by name in ExecuteContainerCommand and update filtering in Terminal Index 2025-08-12 10:06:19 +02:00
peaklabs-dev
279edf696c
chore(docker): remove unused arguments on StopService 2025-08-04 22:12:56 +02:00
🏔️ Peak
2a526c54d5
fix(docker): volumes get delete when stopping a service if Delete Unused Volumes is activated (#6317) 2025-08-04 21:15:56 +02:00
Andras Bacsai
43ff38d914 feat(terminal): dispatch focus event for terminal after connection and enhance focus handling in JavaScript 2025-07-18 22:39:42 +02:00
Andras Bacsai
ef91e43384 feat(container): add updatedSelectedContainer method to connect to non-default containers and update wire:model for improved reactivity 2025-07-18 20:48:56 +02:00
Andras Bacsai
ca62f8dacc refactor(terminal): simplify command construction for SSH execution 2025-07-03 15:48:59 +02:00
Andras Bacsai
13a9816770 fix(service): ensure configuration changes are properly tracked and dispatched 2025-07-03 15:08:13 +02:00
Andras Bacsai
a1ec86f433 fix(terminal): ensure shell execution only uses valid shell if available in terminal command 2025-07-01 10:37:34 +02:00
Andras Bacsai
f7daddce58 refactor(ui): terminal 2025-06-17 09:28:07 +02:00
Andras Bacsai
d1d899c0cf refactor(execute-container-command): simplify connection logic and improve terminal availability checks 2025-06-14 13:56:48 +02:00
Andras Bacsai
64dd648b3f fix(terminal): now it should work 2025-06-14 13:00:16 +02:00
Andras Bacsai
581151bb11 refactor(resource-operations): filter out build servers from the server list and clean up commented-out code in the resource operations view 2025-06-13 16:49:27 +02:00
Andras Bacsai
d47d2f14f7 refactor(logs): remove unused methods and debug functionality from Logs.php for cleaner code 2025-06-10 10:48:08 +02:00
Andras Bacsai
8e70b2907f fix(terminal-connection): improve error handling and stability for auto-connection; enhance component readiness checks and retry logic 2025-06-06 21:40:52 +02:00
Andras Bacsai
7df6890920 refactor(terminal-connection): streamline auto-connection logic and improve component readiness checks 2025-06-06 21:34:27 +02:00
Andras Bacsai
ba970d909c feat(terminal-connection): enhance terminal connection handling with auto-connect feature and improved status messaging 2025-06-06 21:15:50 +02:00
Andras Bacsai
618a7d459c refactor(logs): enhance container loading logic and improve UI for logs display across various resource types 2025-06-05 13:24:26 +02:00
Andras Bacsai
9480fc2b2f refactor(environment-variables): remove debug logging from bulk submit handling for cleaner code 2025-05-30 09:11:40 +02:00
Andras Bacsai
05a03c44d3 refactor(terminal): enhance terminal connection management and error handling, including improved reconnection logic and cleanup procedures 2025-05-29 14:36:13 +02:00
Andras Bacsai
261a2fe564 feat(ca-certificate): add CA certificate management functionality with UI integration and routing 2025-05-29 14:27:28 +02:00
Andras Bacsai
9d71900952 refactor(terminal-access): streamline resource retrieval and enhance terminal access messaging in UI 2025-05-29 14:26:48 +02:00
Andras Bacsai
46b4cfac68 feat(terminal-access): implement terminal access control for servers and containers, including UI updates and backend logic 2025-05-29 14:09:05 +02:00
Andras Bacsai
102bdb5bc3 refactor(application): enhance application stopping logic to support multiple servers 2025-05-26 21:44:34 +02:00
Andras Bacsai
be0453d9df fix: Traefik start on new server validation
fix: Multiple server selection ui flow
2025-05-26 21:06:00 +02:00
Andras Bacsai
786bfa960f improvement(core): simplify events for app/db/service status changes 2025-05-19 21:50:32 +02:00
Andras Bacsai
00fe6e9003 refactor(environment-variables): remove protected variable checks from delete methods for cleaner logic 2025-04-22 11:40:35 +02:00
Andras Bacsai
d075241289 feat(Deployment): enhance queue_application_deployment to handle existing deployments and return appropriate status messages 2025-04-11 15:27:56 +02:00
Andras Bacsai
f63415f027 feat(EnvironmentVariable): implement protection for critical environment variables and enhance deletion logic 2025-04-07 22:57:26 +02:00
Andras Bacsai
d383344ab9 feat(EnvironmentVariable): add handling for Redis credentials in the environment variable component 2025-04-06 21:13:11 +02:00
Andras Bacsai
798aab6955 refactor(ScheduledTask): clean up code formatting and remove unused import 2025-03-14 16:11:41 +01:00
Andras Bacsai
3f62225ec3 refactor(scheduled-tasks): Improve scheduled task creation and management 2025-02-27 13:26:35 +01:00
Andras Bacsai
1e28cf56ac fix(ui): Correct redirect routes after task deletion 2025-02-27 13:26:24 +01:00
Andras Bacsai
27e4882d57 feat(core): You can validate compose files with docker compose config
fix(core): labels are now accepted with both compose styles
refactor: remove lots of ray's
2025-02-27 11:29:04 +01:00
Andras Bacsai
0ff7c468c8 fix(ui): skip SERVICE_FQDN and SERVICE_URL variables during update 2025-02-03 15:44:15 +01:00
Andras Bacsai
8f1bde2534 fix(core): check cron expression on save 2025-01-28 11:01:50 +01:00
Efthymis Sarmpanis
01b9cbdfea fix: validate cron expression in Scheduled Task update 2025-01-27 22:50:54 +02:00
peaklabs-dev
09d64d4bf6
feat(terminal): show terminal unavailable if the container does not have a shell on the global terminal UI 2025-01-23 11:51:01 +01:00
peaklabs-dev
007e291bef
fix(terminal): terminal shows that it is not available, even though it is 2025-01-23 11:50:06 +01:00
peaklabs-dev
9f3c6b4b76
fix(env): shared variables can not be updated 2025-01-22 17:02:11 +01:00
peaklabs-dev
31992f4d02
fix(ui):show error on terminal if container has no shell (bash/sh) 2025-01-21 18:36:38 +01:00
peaklabs-dev
85f38b7cb5
refactor: improve data formatting and UI
- move date and duration functions to a shared function
- remove duplicate code
- redesigned the deployment executions tab
- added start and end times for backups, scheduled tasks, deployments and docker cleanup executions
- calculated the duration for backups, scheduled tasks, deployments and Docker cleanup executions
- redesigned status badges with colors to make it easier to see your current status
- removed dependency on dayjs
- fixed calculation of execution time was sometimes incorrect
2025-01-15 18:35:20 +01:00
peaklabs-dev
43dacd83c9
chore: use the new job dispatch 2025-01-13 11:13:35 +01:00
peaklabs-dev
34873b2c59
feat: volume cloning for ResourceOperations 2025-01-09 14:13:09 +01:00
peaklabs-dev
249e39ea71
fix: implement all the cloneMe changes for ResourceOperations as well 2025-01-08 17:26:59 +01:00
peaklabs-dev
fc1963f642
chore: remove unused computed fields 2025-01-08 17:08:36 +01:00
peaklabs-dev
66d0926142
fix: Undefined variable $fs_path for databases 2025-01-08 16:00:49 +01:00
peaklabs-dev
91e1220912
fix: service cloning on a separate server
- To be able to clone a service to a new server we need to set the server_id as well, otherwise it will be cloned on the same server.
2025-01-07 19:26:25 +01:00
peaklabs-dev
d53065967e
fix: exclude system and computed fields from model replication
- Remove auto-generated properties (`id`, `created_at` and `updated_at` ) from replicate
- Exclude computed count properties (`additional_servers_count`, `additional_networks_count`) loaded by global scope to prevent errors
2025-01-07 17:18:04 +01:00
Andras Bacsai
1fe4dd722b Revert "rector: arrrrr"
This reverts commit 16c0cd10d8.
2025-01-07 15:31:43 +01:00
Andras Bacsai
16c0cd10d8 rector: arrrrr 2025-01-07 14:52:08 +01:00
Andras Bacsai
bf9d89f279
Merge branch 'next' into fix-environement-route 2024-12-17 12:17:50 +01:00
Andras Bacsai
38256af9b3 fix: refactor database view 2024-12-17 12:10:55 +01:00
Andras Bacsai
2a9d499251 feat: migrate env variables to polymorphic relationship
fix: proxy status query ui
2024-12-17 10:38:42 +01:00
Andras Bacsai
e76817d401 improve application view 2024-12-16 14:11:45 +01:00
Andras Bacsai
2565deba4f fix: resource clone name + volume name generation 2024-12-16 10:25:56 +01:00
Andras Bacsai
664b718ea3 fix: always have download logs button on scheduled tasks 2024-12-09 11:53:50 +01:00