Commit Graph

12856 Commits

Author SHA1 Message Date
Andras Bacsai 56481b31bc Remove migration report for Livewire legacy model binding as all components have been successfully migrated and are ready for production deployment. 2025-10-14 09:15:41 +02:00
Andras Bacsai 043b144f5d Merge branch 'next' into andrasbacsai/livewire-model-binding 2025-10-14 09:02:00 +02:00
Andras Bacsai 53b605c4b2 Disable legacy_model_binding flag in Livewire config
All components have been migrated from legacy model binding to explicit
public properties with syncData() pattern. Safe to disable the flag.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 15:44: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 009ac822ab Merge pull request #6861 from coollabsio/fix-pgadmin-docker-network
fix: enable docker network connection for pgadmin service
2025-10-13 14:17:15 +02:00
Andras Bacsai 473fe6ffa3 Merge branch 'next' into fix-pgadmin-docker-network 2025-10-13 14:16:27 +02:00
Andras Bacsai 777cdc91f0 fix: enable docker network connection for pgadmin service 2025-10-13 14:13:40 +02:00
Andras Bacsai 8d403cc511 Merge pull request #6538 from AmirHosseinKarimi/fix/mattermost-docker-compose
fix(templates): remove mattermost healthcheck command according to lack of shell in new version
2025-10-13 13:40:17 +02:00
Andras Bacsai fe91c25b14 Merge pull request #6557 from elalemanyo/template/once-campfire
feat(campfire): add template for Once Campfire
2025-10-13 13:39:43 +02:00
Andras Bacsai 0681f4d004 Merge pull request #6559 from halilim/add-service-gramps-web
feat(service): add Gramps Web template
2025-10-13 13:39:08 +02:00
Andras Bacsai a1dfb31bf2 Merge pull request #6576 from itsneeku/patch-1
chore(service): update convex template and image
2025-10-13 13:38:40 +02:00
Andras Bacsai 7443b266d8 Merge pull request #6589 from htnminh/v4.x
fix(template/filebrowser): correct healthcheck for Filebrowser
2025-10-13 13:38:10 +02:00
Andras Bacsai e875fed548 Merge pull request #6563 from ShadowArcanist/service/pgadmin
feat(service): add pgAdmin
2025-10-13 13:37:36 +02:00
Andras Bacsai 4092100cce Merge pull request #6655 from yipfram/service/lobe-ai-chat
feat(templates): added Lobe Chat service
2025-10-13 13:34:18 +02:00
Andras Bacsai 591d495ec2 Merge pull request #6631 from zehjotkah/next
added rybbit service template
2025-10-13 13:33:55 +02:00
Andras Bacsai 70ab263115 Merge pull request #6636 from scanash00/main
fix: Bluesky PDS template
2025-10-13 13:04:21 +02:00
Andras Bacsai 3c3ac8cdad Merge pull request #6710 from EvanSchleret/v4.x
feat: Add mail environment variables to docmost.yaml
2025-10-13 13:02:36 +02:00
Andras Bacsai a1fa49eb0d Merge pull request #6721 from ShadowArcanist/shadow/fix-service-traccar-healthcheck
fix(service): traccar no available server error
2025-10-13 13:02:02 +02:00
Andras Bacsai cdfc991e2b Merge pull request #6735 from Blaumaus/swetrix-analytics-service
feat(service): add Swetrix template
2025-10-13 13:01:45 +02:00
Andras Bacsai f8f4c046a7 Merge pull request #6753 from seefs001/next
feat(template): NewAPI template
2025-10-13 12:53:24 +02:00
Andras Bacsai 42e39081f8 Merge pull request #6778 from mario-neuhold/patch-1
feat (template): use new homarr image
2025-10-13 12:52:58 +02:00
Andras Bacsai 6098a58c9f Merge pull request #6793 from YaRissi/service/gotify
feat(template): Adding Gotify service
2025-10-13 12:52:05 +02:00
Andras Bacsai 3e5fb4ae63 Merge pull request #6806 from ShadowArcanist/patch-3
chore(service): Added healthcheck to moodle
2025-10-13 12:50:48 +02:00
Andras Bacsai a1916c965a Merge pull request #6831 from ShadowArcanist/patch-4
fix(service): added missing resend env for documenso
2025-10-13 12:50:19 +02:00
Andras Bacsai bb9ddd089a Merge pull request #6859 from coollabsio/andrasbacsai/fix-livewire-field-reset
refactor: migrate database components from legacy model binding to explicit properties
2025-10-13 10:51:04 +02:00
Andras Bacsai df77a99fa3 Merge branch 'next' into andrasbacsai/fix-livewire-field-reset 2025-10-13 10:50:56 +02:00
Andras Bacsai 174c212617 Merge pull request #6860 from coollabsio/fix-api-env-vars-fields
fix: allow all environment variable fields in API endpoints
2025-10-13 10:45:35 +02:00
Andras Bacsai 78031b991a fix: allow all environment variable fields in API endpoints
Fixes #6847

The API endpoints for environment variables were rejecting valid fields
like is_buildtime, is_runtime, is_multiline, and is_shown_once with
422 errors, even though the code was using these fields internally.

Changes:
- Added missing fields to $allowedFields in create_env()
- Added missing fields to $allowedFields in update_env_by_uuid()
- Updated allowed fields in create_bulk_envs()
- Added validation rules for is_runtime and is_buildtime

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 10:44:06 +02:00
Andras Bacsai 400746f72a Merge pull request #6852 from YaRissi/fix/openapi
fix(openapi): missing 422 error code in openapi spec
2025-10-13 10:42:14 +02:00
Andras Bacsai 6879ba87df Merge branch 'next' into fix/openapi 2025-10-13 10:42:05 +02:00
Andras Bacsai acc5dbe105 Merge branch 'next' into andrasbacsai/fix-livewire-field-reset 2025-10-13 10:38:02 +02:00
Andras Bacsai 3dfef0b53a Merge pull request #6858 from coollabsio/andrasbacsai/fix-db-port-mapping-conflict
fix: prevent container name conflict when updating database port mappings
2025-10-13 10:36:15 +02:00
Andras Bacsai 8d280b4aac fix: prevent container name conflict when updating database port mappings
When port mappings are changed in the UI and the database is restarted,
the system now gracefully stops and removes the existing container before
recreating it with the new configuration.

This prevents the "container name already in use" error that occurred when
Docker Compose tried to create a container with the same name but different
port configuration.

Changes:
- Add graceful container stop (10s timeout) before docker compose up
- Remove old container to avoid name conflicts
- Use --timeout flag (modern Docker CLI) instead of deprecated --time
- Apply fix to all database types: MariaDB, MySQL, PostgreSQL, MongoDB,
  Redis, KeyDB, Dragonfly, and ClickHouse
- Update StopDatabase.php for consistency

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-13 10:01:54 +02:00
Andras Bacsai a15ab54495 refactor: migrate database components from legacy model binding to explicit properties
- Remove global 'refresh' event listeners from all database General components
- Migrate Redis, MySQL, MariaDB, MongoDB, PostgreSQL, and KeyDB components to use explicit public properties instead of wire:model="database.field"
- Implement syncData() method in each component for manual data synchronization between properties and Eloquent models
- Update all validation rules, messages, and attributes to reference new property names
- Update Blade views to bind inputs to explicit properties (e.g., id="name" instead of id="database.name")
- Prepare codebase for disabling Livewire's legacy_model_binding configuration option

This refactoring resolves form field reset issues caused by global refresh events
and follows Livewire 3 best practices for component property management.
2025-10-13 10:01:17 +02:00
Andras Bacsai ecdeed7787 Merge pull request #6855 from coollabsio/andrasbacsai/onboarding-redesign
feat(onboarding): redesign user onboarding flow with modern UI/UX
2025-10-12 18:56:55 +02:00
Andras Bacsai de24489aa7 fix(onboarding): auto-select first SSH key for better UX
- Auto-select first SSH key when available instead of requiring explicit selection
- Remove disabled placeholder option from dropdown
- Prevents confusing error when user clicks "Use Selected Key" without changing dropdown
- Improves onboarding flow by having a sensible default selection

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 18:54:12 +02:00
Andras Bacsai 04625591ea feat(onboarding): add Hetzner integration and fix navigation issues
- Add Hetzner Cloud server creation option to onboarding flow
- Change grid from 2 to 3 columns to accommodate all server options
- Mark both Hetzner and Remote Server as "Recommended"
- Fix Hetzner card height to match other cards
- Remove "select existing server" phase - onboarding always creates new servers
- Fix project loading on page refresh in Project Setup phase
- Fix browser back button navigation - remove aggressive restartBoarding() call
- Fix SSH key dropdown to not auto-select first key - require explicit selection
- Make checkpoint titles more prominent across all phases

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 18:52:45 +02:00
Andras Bacsai 1902ef886d Merge branch 'next' into andrasbacsai/onboarding-redesign 2025-10-12 18:02:37 +02:00
Andras Bacsai 7a008c859a feat(onboarding): redesign user onboarding flow with modern UI/UX
- Add centered, card-based layout with clean design
- Implement 3-step progress indicator component
- Add proper dark/light mode support following Coolify design system
- Implement Livewire URL state persistence for browser navigation
- Separate private key textareas for "Generate" vs "Add your own" modes
- Consistent checkpoint styling across all onboarding phases
- Enhanced typography with prominent titles (semibold, white in dark mode)
- Fixed state restoration on page refresh and browser back/forward navigation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 17:59:37 +02:00
Andras Bacsai b7af8cea5a Merge pull request #6854 from coollabsio/andrasbacsai/terminal-datalist-dropdown
feat: replace terminal dropdown with searchable datalist component
2025-10-12 15:15:49 +02:00
Andras Bacsai 6297ac6c88 feat: replace terminal dropdown with searchable datalist component
Enhanced the terminal server/container selection with a new searchable datalist component:

**Terminal View Changes:**
- Replaced `x-forms.select` with `x-forms.datalist` for server/container selection
- Added search functionality for filtering servers and containers
- Fixed form validation by adding hidden input for proper HTML5 validation
- Prevented error messages when clearing selection (sets to 'default')

**Datalist Component (Single Selection):**
- Implemented Alpine.js-powered dropdown with search functionality
- Added visual dropdown arrow that rotates when opened
- Proper entangle binding for wire:model support
- Keyboard support (Escape to close)
- Click outside to close behavior
- Disabled options filtering (skips disabled options)
- Consistent styling with input/textarea components

**Styling Improvements:**
- Explicit background colors: `bg-white` (light) and `dark:bg-coolgray-100` (dark)
- Proper ring border: `ring-1 ring-inset ring-neutral-200 dark:ring-coolgray-300`
- Focus states: `focus-within:ring-2 focus-within:ring-coollabs dark:focus-within:ring-warning`
- Text colors: `text-black dark:text-white`
- Added custom scrollbar styling for dropdown lists
- Wire:dirty state support for visual feedback
- Proper padding and spacing (`py-1.5`, `px-1`, `px-2`)

**Multiple Selection Mode:**
- Also updated for consistent styling and scrollbar support
- Added proper background colors and focus states

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-12 14:57:45 +02:00
elmariss 737ec521b6 fix: missing 422 error code in openapi spec 2025-10-12 14:20:45 +02:00
Andras Bacsai 635af44539 Merge pull request #6837 from coollabsio/andrasbacsai/custom-webhooks
feat: add custom webhook notification support
2025-10-12 10:57:47 +02:00
Blue Mouse ccdbf95a16 Bump version to v4.0.5 2025-10-11 21:48:53 +01:00
Andras Bacsai 95fe04c484 Merge pull request #6817 from coollabsio/hetzner-do
Hetzner integration
2025-10-11 19:23:19 +02:00
Andras Bacsai 052ef19a2d Merge pull request #6849 from coollabsio/add-new-sponsors
Update sponsors list in README
2025-10-11 19:21:07 +02:00
Andras Bacsai 6e08af6016 Update sponsors list in README
Add new sponsors:
- 23M - High-availability hosting solutions
- Brand.dev - API for product personalization
- ByteBase - Database CI/CD and Security
- Formbricks - Open source feedback platform
- Mobb - AI-generated code security
- Ramnode - High Performance Cloud VPS Hosting

Remove inactive sponsors (commented out in website):
- Cloudify.ro
- GlueOps
- MassiveGrid
- QuantCDN
- Trieve
- WZ-IT

Reorganize sponsors in alphabetical order for easier maintenance.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 19:17:09 +02:00
Andras Bacsai fc9f59b767 Merge pull request #6843 from coollabsio/andrasbacsai/hetzner-cloud-init
feat: add cloud-init script support for Hetzner server creation + CI workflow fix
2025-10-11 19:10:17 +02:00
Andras Bacsai 821aa6a531 dev container name 2025-10-11 18:57:58 +02:00
Andras Bacsai a7b9e78215 refactor: reduce cloud-init label width for better layout
Reduce label width from w-64 to w-32 to prevent layout issues
when the clear button is added next to the dropdown.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-11 18:55:43 +02:00