Commit graph

390 commits

Author SHA1 Message Date
Andras Bacsai
92dff0c0c7 fix: prevent divide-by-zero in env-var autocomplete navigation
Fixes a critical bug in the environment variable autocomplete component
where arrow key navigation could cause divide-by-zero errors when the
suggestions array is empty.

Changes:
- Add early guard in handleKeydown to check for empty suggestions array
  before performing modulo operations
- Remove unreachable "No suggestions" template that could never display
- Add validation to hide dropdown when user types third brace ({{{)
- Refactor add.blade.php to use @if directives instead of x-show for
  better performance and cleaner code

The fix ensures arrow keys do nothing when suggestions are empty,
preventing JavaScript errors while maintaining all existing functionality
including the scoped empty state messages with helpful links.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 10:55:37 +01:00
Andras Bacsai
4147cfa537 refactor: use Laravel route() helper for shared variable URLs
- Replace hardcoded URL paths in getScopeUrl() with Laravel's route() helper
- Add scopeUrls property to EnvVarInput component with named routes
- Pass projectUuid and environmentUuid to enable context-specific environment links
- Environment scope link now navigates to the specific project/environment shared variables page

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 10:12:17 +01:00
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
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
1ab4b9aa31 refactor: simplify project data retrieval and enhance OAuth settings handling 2025-10-27 17:03:19 +01:00
Andras Bacsai
cae0bb9d52 fix: use break-all to force line wrapping in logs
Changed word-break strategy to properly wrap long lines:
- Changed from break-words to break-all for aggressive wrapping
- Added min-w-0 to container to allow flex shrinking
- Added max-w-full to pre element to respect parent width
- This ensures long URLs and file paths break anywhere to prevent overflow

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 18:05:47 +02:00
Andras Bacsai
d65bf748c0 fix: prevent horizontal overflow in log text
Added proper overflow handling and word breaking for log content:
- Added overflow-x-hidden to prevent horizontal scrolling in log container
- Added break-words and overflow-wrap-anywhere to force long lines to wrap
- This ensures long log lines (URLs, file paths, etc.) wrap properly on mobile

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 18:03:23 +02:00
Andras Bacsai
c94aa7bd83 fix: improve proxy logs form layout for better responsive behavior
Restructured the form to prevent overflow issues on mobile:
- Separated input field from controls in distinct sections
- Button and checkboxes now in a wrapping flex container
- All controls stack vertically on mobile for better readability
- Horizontal layout with wrapping on larger screens

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 18:01:13 +02:00
Andras Bacsai
a1ece556d4 fix: make proxy logs page responsive
The proxy logs form controls were not responsive on mobile devices. The form now stacks vertically on mobile and displays horizontally on larger screens.

Changes:
- Changed form layout to flex-col on mobile, flex-row on sm+ screens
- Made input field full width on mobile (w-full), fixed width (w-96) on sm+ screens
- Adjusted gap spacing for better mobile experience (gap-4 on mobile, gap-2 on sm+)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 11:38:23 +02:00
Andras Bacsai
04ee546a49 fix: make environment variable forms responsive
Replace horizontal scrolling with flex-wrap for checkbox containers
in environment variable forms to improve mobile responsiveness.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-25 10:22:26 +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
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
bed7ad833e ui(core): update projects property type and enhance UI styling
- Changed the projects property in the Dashboard component from an array to a Collection for improved data handling.
- Added new color variables in CSS for better theming options.
- Updated button styles across various components for consistency and improved user experience.
- Refined dropdown and notification components for better visual alignment and usability.
2025-10-01 08:23:35 +02:00
Andras Bacsai
25a7be23a9 ui(storage): enhance file storage management with new properties and UI improvements
- Added properties to manage file and directory counts, improving data handling in the Livewire component.
- Updated the file storage view to include a tabbed interface for volumes, files, and directories, enhancing user navigation.
- Improved UI layout for better readability and user experience, including consistent styling and informative messages.
2025-10-01 08:23:21 +02:00
Andras Bacsai
ef4527ed47 feat(ui): enhance resource operations interface with dynamic selection for cloning and moving resources 2025-09-29 14:44:50 +02:00
Andras Bacsai
75d282765b
Merge pull request #6724 from ShadowArcanist/shadow/add-dropdown-healthcheck-method
chore(ui): improve application healthcheck page
2025-09-29 12:36:23 +02:00
ShadowArcanist
1f5a61227c Replaced old warning text with new callout component + rewritten warning for more clarity 2025-09-29 10:17:30 +05:30
ShadowArcanist
6958bb82b7 Fixed spacing between description text and title on application healthcheck page 2025-09-29 10:08:43 +05:30
ShadowArcanist
48ccfa3124 Added confirmation modal for enabling healtcheck + replaced enable checkbox with a button 2025-09-29 10:07:47 +05:30
ShadowArcanist
64af66ab94 Added dropdown with http and http scheme options for application Healthcheck 2025-09-29 08:37:53 +05:30
ShadowArcanist
56beced4d2 Added dropdown with GET and POST options for application Healthcheck 2025-09-29 08:35:02 +05:30
Andras Bacsai
01c678053d fix(configuration-checker): update message to clarify redeployment requirement for configuration changes 2025-09-28 09:58:05 +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
664e2eaac7 fix(environment-variable): update checkbox visibility and helper text for build and runtime options
- Removed unnecessary condition for displaying the buildtime checkbox.
- Improved the layout and helper text for runtime and literal checkboxes to enhance user understanding.
2025-09-24 17:27:48 +02:00
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
3cc2426b9a style(environment-variable): adjust SVG icon margin for improved layout in locked state 2025-09-22 09:26:55 +02:00
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
a0f4566580 Fixed Memory title on app metrics being larger than CPU title 2025-09-19 22:55: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
99fd4b424d feat(environment): add dynamic checkbox options for environment variable settings based on user permissions and variable types 2025-09-19 14:17:10 +02:00
Andras Bacsai
bfaefed1ae refactor(environment): streamline rendering of Docker Build Secrets checkbox and adjust layout for environment variable settings 2025-09-19 13:45:37 +02:00
ShadowArcanist
65f24de101 Changed Sentinel metrics color from yellow to blue + cyan (cpu + memory) 2025-09-19 16:26:11 +05:30
peaklabs-dev
b64de1b5cd
fix: order for git deploy types 2025-09-18 19:56:46 +02:00
peaklabs-dev
c0ddf73b75
fix(ui): change order and fix ui on small screens 2025-09-18 19:14:34 +02:00
peaklabs-dev
429c43f9e5
chore: change order of runtime and buildtime 2025-09-18 19:13:45 +02:00
Andras Bacsai
711c16f0e6 refactor(environment): conditionally render Docker Build Secrets checkbox based on build pack type 2025-09-18 18:25:36 +02:00
Andras Bacsai
b0ff584ff4 fix(environment): correct grammatical errors in helper text for environment variable sorting checkbox 2025-09-18 18:17:37 +02:00
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
6d477ff593 feat(execute-container): enhance container command form with auto-connect feature for single container scenarios 2025-09-11 17:37:40 +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
f64622c764 refactor(models): remove 'is_readonly' attribute from multiple database models for consistency 2025-09-10 19:34:49 +02:00