Commit graph

249 commits

Author SHA1 Message Date
Andras Bacsai
9d0d8c6729 Fix loading icon showing during automatic status checks
The loading icon was appearing during automatic background status checks
(every 10 seconds) even when users didn't click anything, which caused
confusion and made it seem like something was running unexpectedly.

Changes:
- Added manualCheckStatus() method to Application, Database, and Service
  Heading components that wraps the checkStatus() call
- Updated status component buttons to call manualCheckStatus() instead
  of checkStatus()
- Added wire:target="manualCheckStatus" to loading directives so the
  loading icon only appears when users explicitly click the refresh button
- Added delay.shortest to prevent flickering on fast operations

The automatic wire:poll.10000ms="checkStatus" now runs silently in the
background without showing the loading icon, while manual refreshes
still provide visual feedback to the user.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 12:58:52 +02:00
Andras Bacsai
e2c254a5a8 Changes auto-committed by Conductor 2025-10-16 17:08:08 +02:00
Andras Bacsai
cdf6b5f161 Fix preview domain generation for services with multiple domains
When a docker compose service has multiple comma-separated domains, the
generate() method was only processing the first domain and truncating the rest.

The issue was that Url::fromString() can't parse comma-separated URLs - it only
parses the first one.

Fixed by:
1. Splitting comma-separated domains with explode(',', $domain_string)
2. Processing each domain individually in a foreach loop
3. Generating preview URLs for each domain using the same template/random/pr_id
4. Joining the results back with implode(',', $preview_fqdns)

This ensures all domains get properly transformed for preview deployments.

Example:
- Original: http://domain1.com,http://domain2.com
- Preview: http://57.domain1.com,http://57.domain2.com
- Before fix: http://57.domain1.com,http (truncated)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 13:10:29 +02:00
Andras Bacsai
db3514cd8e Fix json_decode null handling in PreviewsCompose
Fixed three potential fatal errors where json_decode could return null:

1. save() method (lines 39-41): Added null coalescing to default to empty array,
   and ensure service entry exists before writing domain
2. generate() method (line 56): Changed to use assoc flag consistently and
   fallback to empty array
3. generate() method (lines 95-97): Same fix as save() - null coalescing and
   service entry initialization

All json_decode calls now consistently:
- Use the assoc flag to return arrays (not objects)
- Fall back to empty array with ?: []
- Initialize service entry with ?? [] before writing

This prevents "Attempt to modify property of null" fatal errors.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 13:04:23 +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
ae64f8cb86 fix validation on a few views 2025-10-06 21:25:24 +02:00
Andras Bacsai
d63802e03d feat(deployments): add log copying functionality to clipboard in dev 2025-10-02 18:34:39 +02:00
Andras Bacsai
1fe7df7e38 fix(git): trim whitespace from repository, branch, and commit SHA fields
- Add automatic trimming in Application model's boot method for git_repository, git_branch, and git_commit_sha fields
- Add real-time trimming in Source Livewire component via updated{Property} methods
- Refresh component state after save to ensure UI displays trimmed values
- Prevents deployment issues caused by accidental whitespace in git configuration
2025-09-30 12:33:40 +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
Andras Bacsai
708a08fdd6 fix(application): enhance domain handling by replacing both dots and dashes with underscores for HTML form binding 2025-09-25 13:19:12 +02:00
Andras Bacsai
4ce495d91e
Update app/Livewire/Project/Application/PreviewsCompose.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-09-24 17:53:18 +02:00
Michael Engel
8ee4ddf489
fix(PreviewCompose): adds port to preview urls 2025-09-24 10:52:01 +02:00
Andras Bacsai
4fc62ea33f
Merge pull request #6496 from QarthO/fix/url-validation
fix(domains) url validation silently fails with surrounding whitespace
2025-09-22 12:49:43 +02:00
Andras Bacsai
9e8fb36bc8 feat(deployment): implement cancellation checks during deployment process to enhance user control and prevent unnecessary execution 2025-09-16 13:40:51 +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
501e6a2650 refactor(environment): standardize service name formatting by replacing '-' and '.' with '_' in environment variable keys 2025-09-11 13:59:02 +02:00
Andras Bacsai
0db2835565 fix(application): add functionality to stop and remove Docker containers on server 2025-09-11 12:39:28 +02:00
Andras Bacsai
a7671ed379 refactor(dns-validation): rename DNS validation functions for consistency and clarity, and remove unused code 2025-09-09 09:00:35 +02:00
Andras Bacsai
339118558c feat(settings): add option to restrict PR deployments to repository members and contributors 2025-09-05 14:30:51 +02:00
QarthO
bfc8a25b72 move domain trimming before URL validation 2025-08-29 09:09:03 -04: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
e0aa28ba31 refactor(domains): rename check_domain_usage to checkDomainUsage and update references across the application 2025-08-28 10:00:19 +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
6ef16f6170 fix(auth): enhance authorization checks in application management 2025-08-23 18:19:50 +02:00
Andras Bacsai
40f108d6e1 feat(auth): implement authorization checks for application management 2025-08-22 16:47:59 +02:00
Andras Bacsai
a6fc39e798 feat(git-settings): add support for shallow cloning in application settings
- Introduced a new boolean setting `is_git_shallow_clone_enabled` to the application settings model.
- Updated the `Advanced` component to include a checkbox for enabling shallow cloning.
- Modified the `setGitImportSettings` and `generateGitImportCommands` methods to handle shallow clone logic.
- Created a migration to add the new setting to the database schema.
- Enhanced the deployment process to utilize shallow cloning for improved performance.
2025-08-21 10:16:57 +02:00
Andras Bacsai
5c4a265542 refactor(validation): implement centralized validation patterns across components
- Introduced `ValidationPatterns` class to standardize validation rules and messages for various fields across multiple components.
- Updated components including `General`, `StackForm`, `Create`, and `Show` to utilize the new validation patterns, ensuring consistent validation logic.
- Enhanced error messages for required fields and added regex validation for names and descriptions to improve user feedback.
- Adjusted styling in the `create.blade.php` view for better visual hierarchy.
2025-08-19 14:15:31 +02:00
Andras Bacsai
460198bb05 fix(application): clear Docker Compose specific data when switching away from dockercompose 2025-08-18 11:31:14 +02:00
Andras Bacsai
970fd3d9e6 refactor(parsers): streamline domain handling in applicationParser and improve DNS validation logic 2025-08-12 10:07:11 +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
a0bc4dac55 fix(application): streamline environment variable updates for Docker Compose services and enhance FQDN generation logic 2025-08-12 10:06:19 +02:00
Andras Bacsai
5ddaf3a61f fix(application): add option to suppress toast notifications when loading compose file 2025-07-18 23:22:24 +02:00
Andras Bacsai
039aa86321 fix(application): update service environment variables when generating domain for Docker Compose 2025-07-18 23:16:12 +02:00
Andras Bacsai
90ccaeba51 feat(application): implement environment variable updates for Docker Compose applications, including creation, updating, and deletion of SERVICE_FQDN and SERVICE_URL variables 2025-07-18 20:48:56 +02:00
Andras Bacsai
13f10028db feat(previews): implement soft delete and cleanup for ApplicationPreview, enhancing resource management in DeleteResourceJob 2025-07-14 21:17:40 +02:00
Andras Bacsai
5bdf2e8481 refactor(previews): move preview domain generation logic to ApplicationPreview model for better encapsulation and consistency across webhook handlers 2025-07-14 19:12:57 +02:00
Andras Bacsai
a9e542bc4b fix(previews): enhance domain generation logic for application previews, ensuring unique domains are created when none are set 2025-07-14 15:42:01 +02:00
Andras Bacsai
3bb28c29be fix(application): sanitize service names for HTML form binding and ensure original names are stored in docker compose domains 2025-07-14 14:45:01 +02:00
Andras Bacsai
0b84792871 feat(deployment): add pull request filtering and pagination to deployment and backup execution components
fix(ui): make them more stylish yeah
2025-07-13 12:36:53 +02:00
Andras Bacsai
6d94aaf0f8 refactor(previews): streamline preview URL generation by utilizing application method 2025-07-07 13:14:45 +02:00
Andras Bacsai
3643a388bf fix(github): changing github app breaks the webhook. it does not anymore 2025-06-21 19:28:38 +02:00
Andras Bacsai
1704a25a24 fix(previews): escape container names in stopContainers method to prevent shell injection vulnerabilities 2025-06-04 09:11:08 +02:00
Andras Bacsai
ff20cb0b7c fix(application-configuration): prevent access to preview deployments for deploy_key applications and update menu visibility accordingly 2025-05-30 14:15:07 +02:00
Andras Bacsai
b0e33eb59d fix(application-management): improve stop messages for application, database, and service to enhance clarity and formatting 2025-05-30 14:04:43 +02:00
Andras Bacsai
200b5cd4fb refactor(service-management): enhance container stopping logic by implementing parallel processing and removing deprecated methods 2025-05-30 12:56:22 +02:00
Andras Bacsai
9f06e7193e feat(previews): add force deploy without cache functionality and update deploy method to accept force rebuild parameter 2025-05-30 10:09:13 +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
peaklabs-dev
cb41670af9
refactor(ui): show toast when server does not work and on stop 2025-05-20 15:22:13 +02:00