Commit graph

297 commits

Author SHA1 Message Date
Andras Bacsai
01609e7f8b feat: implement formatContainerStatus helper for human-readable status formatting and add unit tests 2025-11-21 09:12:56 +01:00
Andras Bacsai
ae6eef3cdb feat(tests): add comprehensive tests for ContainerStatusAggregator and serverStatus accessor
- Introduced tests for ContainerStatusAggregator to validate status aggregation logic across various container states.
- Implemented tests to ensure serverStatus accessor correctly checks server infrastructure health without being affected by container status.
- Updated ExcludeFromHealthCheckTest to verify excluded status handling in various components.
- Removed obsolete PushServerUpdateJobStatusAggregationTest as its functionality is covered elsewhere.
- Updated version number for sentinel to 0.0.17 in versions.json.
2025-11-20 17:31:07 +01:00
Andras Bacsai
fe27a99db2 feat: add docker-compose health check examples and github runner migration
This commit adds:
- Comprehensive docker-compose examples for health check testing
- GitHub runner sources database migration
- UI fix for service heading view

Files Added:
- DOCKER_COMPOSE_EXAMPLES.md - Documentation of health check test cases
- docker-compose.*.yml - Test files for various health check scenarios:
  - excluded.yml: Container with exclude_from_hc flag
  - healthy.yml: All containers healthy
  - unhealthy.yml: All containers unhealthy
  - unknown.yml: Container without healthcheck
  - mixed-healthy-unknown.yml: Mix of healthy and unknown
  - mixed-unhealthy-unknown.yml: Mix of unhealthy and unknown
- database/migrations/2025_11_19_115504_create_github_runner_sources_table.php

Files Modified:
- resources/views/livewire/project/service/heading.blade.php

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 13:24:02 +01:00
Andras Bacsai
498b189286 fix: correct status for services with all containers excluded from health checks
When all containers are excluded from health checks, display their actual status
with :excluded suffix instead of misleading hardcoded statuses. This prevents
broken UI state with incorrect action buttons and provides clarity that monitoring
is disabled.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 10:54:51 +01:00
Andras Bacsai
e5f50c2b1f Fix modal width: add maxWidth constraint
The previous fix reduced minWidth but modal still expanded to fit
content. Now:
- Added maxWidth prop to modal-input component (default 48rem)
- Set Edit Domains modal to minWidth=32rem, maxWidth=40rem
- This constrains the modal to a reasonable size range

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 09:46:05 +01:00
Andras Bacsai
4c7d059469 Reduce width of Edit Domains modal
Reduced the minWidth of the Edit Domains modal from 36rem to 24rem
to provide a more compact and focused user experience. The modal
was previously too wide for the simple domain input form.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 09:44:41 +01:00
Andras Bacsai
bcd225bd22 feat: Implement required port validation for service applications
- Added `requiredPort` property to `ServiceApplicationView` to track the required port for services.
- Introduced modal confirmation for removing required ports, including methods to confirm or cancel the action.
- Enhanced `Service` model with `getRequiredPort` and `requiresPort` methods to retrieve port information from service templates.
- Implemented `extractPortFromUrl` method in `ServiceApplication` to extract port from FQDN URLs.
- Updated frontend views to display warnings when required ports are missing from domains.
- Created unit tests for service port validation and extraction logic, ensuring correct behavior for various scenarios.
- Added feature tests for Livewire component handling of domain submissions with required ports.
2025-11-06 14:32:36 +01:00
Andras Bacsai
f0db097a90 fix: clean up formatting and remove unnecessary key binding in stack form component 2025-10-27 17:03:19 +01:00
Andras Bacsai
28fc3feab0 fix: remove wire:ignore from modal and add wire:key to EditCompose component
- Remove wire:ignore from modal-input.blade.php wrapper to allow child Livewire components to be properly tracked
- Add unique wire:key to EditCompose component for proper identification when teleported
- Fixes 'Unable to call component method' error when saving compose files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-27 17:03:19 +01:00
Andras Bacsai
12766695c4 feat: add dynamic viewport-based height for compose editor
- Add Alpine.js reactive height calculation based on viewport size
- Monaco editor now responds to window resize events
- Fix Livewire component structure by moving style tag inside root div
- Update CLAUDE.md to document critical single root element requirement
- Set minimum editor height of 300px with responsive maximum
- Use CSS custom properties to pass calculated height to components
2025-10-27 11:18:25 +01:00
Andras Bacsai
ecada60c78 Fix inconsistent modal height in Edit Docker Compose dialog
The modal height was changing when switching between "Source Compose"
and "Deployable Compose" views due to different heights between the
Monaco editor and regular textareas.

Changes:
- Set fixed height (512px) for Monaco editor via CSS
- Increased textarea rows to 25 to match Monaco editor height
- Wrapped both views in a container with consistent styling
- Modal now maintains same height regardless of view

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 19:18: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
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
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
80499a03d8 feat(domains): implement domain conflict detection and user confirmation modal across application components 2025-08-28 10:52:41 +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
39f25573bf refactor(templates): update service template file handling to use dynamic file name from constants 2025-08-12 10:06:19 +02:00
Andras Bacsai
2b84ce841b refactor(ui): remove unnecessary step3ButtonText attributes from modal confirmation components for cleaner code 2025-06-30 09:15:23 +02:00
Andras Bacsai
90817914d9 refactor(ui): separate views for instance settings to separate paths to make it cleaner 2025-06-30 08:50:17 +02:00
Andras Bacsai
3cd2405b5d fix(ui): update padding for trademarks policy and enhance spacing in advanced settings section 2025-06-25 13:12:15 +02:00
Andras Bacsai
da2937c425 fix(ui): update confirmation button text for stopping database and service 2025-06-24 13:37:05 +02:00
Andras Bacsai
8fc79022f3 feat(service): enhance service status handling and UI updates 2025-06-24 12:52:22 +02:00
Andras Bacsai
d2f84a177a refactor(ui): remove unnecessary padding from deployment, backup, and logs sections 2025-06-17 10:40:53 +02:00
Andras Bacsai
f7daddce58 refactor(ui): terminal 2025-06-17 09:28:07 +02:00
Andras Bacsai
78e9c8583f refactor(navigation): remove wire:navigate directive from configuration links for cleaner HTML structure 2025-06-16 13:09:30 +02:00
Slava Abakumov
b447c26ad2
Capitalize "WordPress" properly (#5958)
* Update wordpress-with-mysql.yaml

Use the correct naming for WordPress.

It's "WordPress", not "Wordpress".

* replace Wordpress with WordPress in templates

* change slogans for templates

* fix in a livewire template file
2025-06-13 11:36:17 +02:00
Andras Bacsai
9ad2304229 refactor(proxy): streamline proxy status handling and improve dashboard availability checks 2025-06-11 12:02:39 +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
393d6f7669 fix(service-management): update service stop and restart messages for improved clarity and formatting 2025-05-30 13:35:09 +02:00
Andras Bacsai
7fdf296c4a refactor(service): enhance modal confirmation component with event dispatching for service stop actions 2025-05-20 11:34:50 +02:00
Andras Bacsai
35b08453e1 refactor(service): consolidate configuration change dispatch logic and remove unused navbar component 2025-05-20 11:15:31 +02:00
peaklabs-dev
79e620eac5
fix(ui): add back missing service navbar components 2025-05-19 23:35:17 +02:00
Andras Bacsai
786bfa960f improvement(core): simplify events for app/db/service status changes 2025-05-19 21:50:32 +02:00
0x4e32
c728e6f2ba
feat(ui): Upgrade to Tailwind v4 (#5710) 2025-05-14 12:43:23 +02:00
Andras Bacsai
5e840ca69b fix(ui): correct closing div tag in service index view 2025-05-03 13:40:04 +02:00
Andras Bacsai
d8185e3d6a fix(ui): allow adding scheduled backups for non-migrated databases 2025-05-03 13:34:20 +02:00
Andras Bacsai
fe24296de7 feat(backup): implement custom database type selection and enhance scheduled backups management 2025-04-30 16:44:44 +02:00
Andras Bacsai
d6eefe7491 fix(database): update label for image input field to improve clarity 2025-04-30 16:43:48 +02:00
Andras Bacsai
e062edb689 refactor(core): streamline container stopping process and reduce timeout duration; update related methods for consistency 2025-04-30 15:28:59 +02:00
Andras Bacsai
d8c3418e72 feat(Service): Add functionality to convert between applications and databases in docker-compose based applications
fix(ui): Fix service layout refresh on compose change
2025-04-29 14:27:17 +02:00
Andras Bacsai
1c804a7409 fix(ui): Remove required attribute from image input in service application view 2025-04-29 09:23:03 +02:00
Andras Bacsai
d47946a0ad fix(ui): Disable livewire navigate feature (causing spam of setInterval()) 2025-04-29 09:04:24 +02:00
Andras Bacsai
a501142ef5 fix(navbar): update error message link to use route for environment variables navigation 2025-04-18 10:32:32 +02:00
Andras Bacsai
0bb47dfa56 refactor(file-storage): improve layout and structure of input fields 2025-03-28 22:10:15 +01:00
Andras Bacsai
7686ebfd6c refactor(file-storage): add loadStorageOnServer method for improved error handling 2025-03-28 21:05:34 +01:00
Andras Bacsai
a73cfd8b09 refactor(modal): add ignoreWire attribute to modal-confirmation component 2025-03-25 09:49:38 +01:00
Andras Bacsai
41205b7ad2 refactor(storage): simplify file storage iteration in Blade template 2025-03-25 09:40:21 +01:00
Andras Bacsai
595370df92 feat(LocalFileVolume): add binary file detection and update UI logic
Implemented a new attribute to detect binary files in the LocalFileVolume model, enhancing the file handling capabilities. The isBinary method checks for binary content based on specific criteria, allowing for better management of file types. Additionally, updated the file storage UI to conditionally display conversion options based on the binary status of the file, improving user experience and preventing unintended actions on binary files. These changes contribute to a more robust and user-friendly file management system.
2025-03-14 14:55:38 +01:00
Andras Bacsai
d894c3d903 feat(database): implement two-step confirmation for database deletion
Added a new delete method in the Database component that includes a two-step confirmation process requiring the user to enter their password. If two-step confirmation is disabled, the deletion proceeds without password verification. Additionally, a confirmation modal has been integrated into the database view to prompt users before deletion, enhancing the safety of this critical operation.
2025-03-12 16:33:35 +01:00
Andras Bacsai
73e0735aa2 fix(core): Only validate custom compose files 2025-02-27 12:18:03 +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
fd09b5b30f refactor(ui): Simplify file storage modal confirmations 2025-02-26 08:22:55 +01:00
Andras Bacsai
0798eb714d fix(ui): Update storage configuration guidance link 2025-02-26 08:22:45 +01:00
Andras Bacsai
d82be931cd feat(ui): add textarea switching option in service compose editor 2025-02-22 13:04:46 +01:00
Andras Bacsai
f02db2a3c5 fix(ui): adjust polling intervals for database and service status checks 2025-02-17 09:52:27 +01:00
Andras Bacsai
a5ca90c965 feat(ui): add periodic status checking for services 2025-02-04 15:01:42 +01:00
Andras Bacsai
d632eb2be9 refactor: simplify service start and restart workflows 2025-02-04 14:34:34 +01:00
peaklabs-dev
8fa59f5ade
fix(ui): Backups link should not redirected to general 2025-01-21 12:32:35 +01:00
Andras Bacsai
55d61ffaee fix: add finished_at to app deployment jobs
fix: show deployment job running measurements
fix: terminal should not be wire:navigated
2025-01-16 12:05:59 +01:00
Andras Bacsai
3f92c1e37b
Merge pull request #4796 from peaklabs-dev/fix-navigation
Feat: Improve navigation performance
2025-01-16 10:42:42 +01:00
Andras Bacsai
dd2d306abc feat: force deployment of services
fix: added advanced ui dropdown to services
2025-01-13 12:03:03 +01:00
peaklabs-dev
b94fc07d7c
fix: service navigation 2025-01-10 16:46:31 +01:00
peaklabs-dev
6a429c46d3
fix: even more wire:navigate 2025-01-10 16:45:08 +01:00
Andras Bacsai
5ad6b86735 fix: disappearing UI after livewire event received 2025-01-06 14:05:20 +01:00
Andras Bacsai
9e3467578f feat: add environment_uuid support and update API documentation
- Introduced `environment_uuid` as a required field in various API endpoints and schemas.
- Updated descriptions to clarify that either `environment_name` or `environment_uuid` must be provided.
- Modified routes and controller methods to accommodate the new UUID parameter.
- Adjusted frontend components to utilize `environment_uuid` for better consistency and clarity.
- Removed deprecated fields related to environment handling.

This change enhances the API's flexibility in identifying environments, improving overall usability.
2024-12-17 13:42:16 +01:00
Andras Bacsai
b7748479d4 fix: service ui structure 2024-12-17 11:13:17 +01:00
Andras Bacsai
4901b12279 fix: service status indicator + oauth saving 2024-12-13 12:03:10 +01:00
Andras Bacsai
f535ed2359 Enhance modal input component and storage forms
- Added 'minWidth' attribute to modal input component for better responsiveness.
- Updated modal input instantiation in storage view to set a minimum width of 64rem.
- Improved layout and user guidance in the storage add forms by adding descriptive text for volume, file, and directory mounts.
- Changed button labels from 'Save' to 'Add' for clarity in storage forms.
2024-12-04 14:00:49 +01:00
Andras Bacsai
7f0094ed55 feat: add hex magic env var 2024-11-26 13:01:42 +01:00
David R
6ed9259547
Correct tab name
There is no General tab, and the Compose file is reachable on the Service Stack tab.
2024-11-13 07:59:11 -05:00
Andras Bacsai
c11dfdee1f refactor create scheduled backup livewire 2024-11-04 11:53:32 +01:00
Andras Bacsai
97aab8ba28 feat: show warning if people would like to use sslip with https 2024-10-20 22:26:30 +02:00
Andras Bacsai
fdeb9353be chore: Update project service configuration view 2024-10-14 19:45:03 +02:00
Andras Bacsai
88f1e58c63 feat: required envs 2024-10-11 14:38:22 +02:00
Andras Bacsai
9330a3f354 feat: add customHelper to stack-form 2024-10-10 13:28:42 +02:00
Andras Bacsai
d637675ce3 chore: Update service application view 2024-10-03 21:02:42 +02:00
Andras Bacsai
14c9f25c57 feat: restart service without pulling the latest image 2024-10-03 13:17:35 +02:00
Andras Bacsai
bb6cb8edc9 improvement: show backup button on supported db service stacks 2024-10-03 10:48:25 +02:00
Andras Bacsai
84b2af53d8 refactor: Fix modal input closeOutside prop in configuration.blade.php 2024-09-26 13:20:06 +02:00
Andras Bacsai
f3ec4ca4a3 refactor: Improve modal confirmation titles and button labels 2024-09-26 13:07:01 +02:00
Andras Bacsai
b84d39ba56 refactor: Update confirmation button text for deletion actions 2024-09-23 08:58:04 +02:00
Andras Bacsai
98e744e808 refactor: Update Docker cleanup label in Heading.php and Navbar.php 2024-09-19 10:27:44 +02:00
Andras Bacsai
5ec45d547a
Merge branch 'next' into fix-#2546-deletion-issues 2024-09-18 18:05:06 +02:00
Andras Bacsai
e937d30545 fix: move terminal to separate view on services 2024-09-17 17:15:34 +02:00
Andras Bacsai
f71fb7266d fix: terminal 2024-09-16 15:35:44 +02:00
ayntk-ai
fc3c69f687
Feat: more conformations and fixes 2024-09-05 17:54:32 +02:00
ayntk-ai
bec974dca4
Fix application image cleanup 2024-09-04 14:54:43 +02:00
ayntk-ai
b314b08f25
Feat: stop service confirm 2024-09-04 14:34:46 +02:00
ayntk-ai
9a2d5be354
Feat: confirm file storage 2024-09-03 18:31:06 +02:00
ayntk-ai
d94e39ccc7
Feat: service confirmation 2024-09-03 16:59:51 +02:00
Andras Bacsai
b8a37d897e fix: Fix directory and file mount headings in file-storage.blade.php 2024-08-29 12:03:23 +02:00
Andras Bacsai
af1b479d73 fix: parser
ui: storage layout changed
2024-08-23 14:21:12 +02:00
Andras Bacsai
0e54ed1343 feat: preserve git repository with advanced file storages 2024-08-12 16:06:24 +02:00
ayntk-ai
d177e49e62
updated warning message and formating 2024-08-09 18:43:13 +02:00
Andras Bacsai
c9a7af0ffa chore: Update navbar and configuration to improve service status check functionality 2024-08-06 14:02:24 +02:00
Andras Bacsai
c648e0dff9 chore: Update navbar to include service status check 2024-08-06 13:50:32 +02:00
Andras Bacsai
3e0821e471 refactor 2024-08-05 20:07:08 +02:00
Andras Bacsai
ea5101c814 fix: file storages (dir/file mount) handled properly 2024-08-05 20:00:57 +02:00
Andras Bacsai
d7b45a6dd2 fix: remove lazy load from scheduled tasks 2024-08-05 11:30:48 +02:00