Commit graph

13722 commits

Author SHA1 Message Date
Andras Bacsai
43bb2f34f4 docs: replace brittle line number references with maintainable method descriptions
Replace 6 line number references in deployment-architecture.md with descriptive
method-based references that remain accurate as code evolves.

Changes:
- Section 1 (Docker Build Cache): Replaced 4 line number refs (~line 1960, ~line 2340,
  ~line 3358, ~line 3530) with detailed method descriptions in ApplicationDeploymentJob.php
- Section 2 (content field): Replaced "line 717" with "parseCompose() function" reference
- Section 3 (is_directory field): Replaced "line 718" with "parseCompose() function" reference

Benefits:
- Documentation remains accurate when code changes
- More informative (explains WHAT methods do, not just WHERE)
- Search-friendly (developers can find methods by name)
- Future-proof (survives refactoring and code movement)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 13:52:27 +01:00
Andras Bacsai
7116711896 chore: update migration timestamp to 2025_11_26_124200
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 13:44:43 +01:00
Andras Bacsai
837391c31b feat: add Docker build cache preservation toggles and development logging
Add two new application settings to control Docker build cache invalidation:
- inject_build_args_to_dockerfile (default: true) - Skip Dockerfile ARG injection
- include_source_commit_in_build (default: false) - Exclude SOURCE_COMMIT from build context

These toggles let users preserve Docker cache when SOURCE_COMMIT or custom ARGs change frequently. Development-only logging shows which ARGs are being injected for debugging.

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 13:42:02 +01:00
Andras Bacsai
4e896cca05 fix: preserve Docker build cache by excluding dynamic variables from build-time contexts
- Remove COOLIFY_CONTAINER_NAME from build-time ARGs (timestamp-based, breaks cache)
- Use APP_KEY instead of random_bytes for COOLIFY_BUILD_SECRETS_HASH (deterministic)
- Add forBuildTime parameter to generate_coolify_env_variables() to control injection
- Keep COOLIFY_CONTAINER_NAME available at runtime for container identification
- Fix misleading log message about .env file purpose

Fixes #7040

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 09:16:32 +01:00
Andras Bacsai
f460bb63cc feat: update version numbers to 4.0.0-beta.448 and 4.0.0-beta.449 2025-11-25 17:06:37 +01:00
Andras Bacsai
55d0671612 feat: create migration for webhook notification settings and cloud init scripts tables 2025-11-25 17:06:16 +01:00
Andras Bacsai
9113ed714f feat: add validation methods for S3 bucket names, paths, and server paths; update import logic to prevent command injection 2025-11-25 16:40:35 +01:00
Andras Bacsai
6c030d96f2
fix: correct webhook notification settings migration and model (#7333) 2025-11-25 15:41:54 +01:00
Andras Bacsai
3bdcc06838 fix: prevent overwriting existing webhook notification settings during migration 2025-11-25 15:40:45 +01:00
Andras Bacsai
477738dd2f fix: update webhook notification settings migration to use updateOrInsert and add logging 2025-11-25 15:35:01 +01:00
Andras Bacsai
a3df33a4e0 fix: correct webhook notification settings migration and model
- Add missing traefik_outdated_webhook_notifications field to migration schema and population logic
- Remove incorrect docker_cleanup_webhook_notifications from model (split into success/failure variants)
- Consolidate webhook notification migrations from 2025_10_10 to 2025_11_25 for proper execution order
- Ensure all 15 notification fields are properly defined and consistent across migration, model, and Livewire component

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 15:18:43 +01:00
Andras Bacsai
17f4b126b1
feat: add environment variable autocomplete component (#7282) 2025-11-25 11:22:00 +01:00
Andras Bacsai
6613f7c6b8
Merge branch 'next' into env-var-autocomplete 2025-11-25 11:21:53 +01:00
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
c239bc708d
feat: S3 restore (#7085) 2025-11-25 10:31:50 +01:00
Andras Bacsai
875351188f feat: improve S3 restore path handling and validation state
- Add path attribute mutator to S3Storage model ensuring paths start with /
- Add updatedS3Path hook to normalize path and reset validation state on blur
- Add updatedS3StorageId hook to reset validation state when storage changes
- Add Enter key support to trigger file check from path input
- Use wire:model.live for S3 storage select, wire:model.blur for path input
- Improve shell escaping in restore job cleanup commands
- Fix isSafeTmpPath helper logic for directory validation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 10:18:30 +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
6d8144c18c Merge remote-tracking branch 'origin/next' into s3-restore
Resolve merge conflicts in:
- bootstrap/helpers/shared.php (kept both formatBytes, isSafeTmpPath, and formatContainerStatus functions)
- database/migrations/2025_10_10_120002_create_cloud_init_scripts_table.php (added Schema::hasTable check)
- database/migrations/2025_10_10_120002_create_webhook_notification_settings_table.php (added Schema::hasTable check)
- resources/views/livewire/project/application/general.blade.php (formatting/whitespace)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 09:35:37 +01:00
Andras Bacsai
01d3f07934
Merge branch 'next' into env-var-autocomplete 2025-11-25 09:35:20 +01:00
Andras Bacsai
99e8aeb6f8 fix: update coolify version to 4.0.0-beta.447 and nightly version to 4.0.0-beta.448 2025-11-25 09:34:43 +01:00
Andras Bacsai
c0ee56d987
fix: handle migration rename errors for v444→v445 upgrades (#7320) 2025-11-24 15:13:49 +01:00
Andras Bacsai
e930005a50 fix: handle existing webhook_notification_settings table in migration
Similar to cloud_init_scripts, this migration was renamed from 120000 to
120002 between v444 and v445, causing "duplicate table" errors for users
upgrading who already have the webhook_notification_settings table created.

Added table existence check before creation for idempotency.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 15:12:14 +01:00
Andras Bacsai
8d3a564cfe fix: update coolify version to 4.0.0-beta.446 and nightly version to 4.0.0-beta.447 2025-11-24 15:10:31 +01:00
Andras Bacsai
2335bfad8f fix: handle existing cloud_init_scripts table in migration
The migration file was renamed from 120000 to 120002 between v444 and v445,
causing "duplicate table" errors for users upgrading from v444 who already
have the cloud_init_scripts table created.

This fix adds a table existence check before creation, making the migration
idempotent and safe for both fresh installations and upgrades.

Fixes the error: SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation
"cloud_init_scripts" already exists

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 15:08:41 +01:00
Andras Bacsai
9af4f734aa fix: update sentinel version to 0.0.18 2025-11-24 13:50:03 +01:00
Andras Bacsai
be83c7ae08
feat(service): add Opnform template (#5875) 2025-11-24 13:02:59 +01:00
Andras Bacsai
56e4164ab2
feat(service): add newt-pangolin template (#6259) 2025-11-24 13:02:42 +01:00
Andras Bacsai
1235a87e5a
Fix: Codimd Service docker-compose (#7096) 2025-11-24 13:02:21 +01:00
Andras Bacsai
767da75154
Fix mosquitto.yaml (#7129) 2025-11-24 13:02:07 +01:00
Andras Bacsai
1e0310e2f4
Fix(Documenso): Resolve pending status issue for Documenso deployments (fixes #1767 (#7145) 2025-11-24 13:01:47 +01:00
Andras Bacsai
9a3b522711
Tailscale template (#7154) 2025-11-24 13:01:23 +01:00
Andras Bacsai
199661b5e4
fixes: default template of Redis Insight (#7176) 2025-11-24 13:00:54 +01:00
Andras Bacsai
c96131c4de
feat: add palworld service (#7206) 2025-11-24 13:00:18 +01:00
Andras Bacsai
c2d2bc74fc
fix(service): Ghost using invalid base url (#7233) 2025-11-24 12:59:46 +01:00
Andras Bacsai
3709b8c498
chore(n8n): upgrade n8n image version to 1.119.2 in compose templates (#7236) 2025-11-24 12:59:31 +01:00
Andras Bacsai
d78e9d9b86
fix(service): netbird client showing wrong host details (#7237) 2025-11-24 12:58:39 +01:00
Andras Bacsai
568d9fab4b
fix(service): plausible compose parsing error (#7244) 2025-11-24 12:57:57 +01:00
Andras Bacsai
97e10dfbf1
Add Persistent Volumes for Themes, Extensions, and Storage in Paymenter (#7304) 2025-11-24 12:57:34 +01:00
Andras Bacsai
e0dc12678b
fix: comprehensive SERVICE_URL/SERVICE_FQDN handling improvements and queue reliability fixes (#7275) 2025-11-24 11:47:11 +01:00
Andras Bacsai
bf428a0e1c
fix: don't show health status for exited containers (#7317) 2025-11-24 10:29:57 +01:00
Andras Bacsai
1149d0f746
feat: implement prerequisite validation and installation for server setup (#7297) 2025-11-24 10:28:10 +01:00
JhumanJ
844f89f42f Upgrade opnform API and UI images to version 1.12.1 in opnform.yaml 2025-11-24 10:13:08 +01:00
Andras Bacsai
75381af742 fix: convert Stringable to plain strings in applicationParser for strict comparisons and collection lookups
This fixes critical bugs where Stringable objects were used in strict comparisons and collection key lookups, causing service existence checks and domain lookups to fail.

**Changes:**
- Line 539: Added ->value() to $originalServiceName conversion
- Line 541: Added ->value() to $serviceName normalization
- Line 621: Removed redundant (string) cast now that $serviceName is a plain string

**Impact:**
- Service existence check now works correctly (line 606: $transformedServiceName === $serviceName)
- Domain lookup finds existing domains (line 615: $domains->get($serviceName))
- Prevents duplicate domain entries in docker_compose_domains collection

**Tests:**
- Added comprehensive unit test suite in ApplicationParserStringableTest.php
- 9 test cases covering type verification, strict comparisons, collection operations, and edge cases
- All tests pass (24 tests, 153 assertions across related parser tests)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 09:22:27 +01:00
Andras Bacsai
ac9eca3c05 fix: don't show health status for exited containers
Exited containers don't run health checks, so showing "(unhealthy)" is
misleading. This fix ensures exited status displays without health
suffixes across all monitoring systems (SSH, Sentinel, services, etc.)
and at the UI layer for backward compatibility with existing data.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 09:09:37 +01:00
Andras Bacsai
64cbda0140 fix: remove dead conditional and unused variables in parsers.php
- Remove useless conditional check for hyphens in service name normalization
  The conditional `if (str($serviceName)->contains('-'))` never executes because
  $serviceName is already normalized with underscores from parseServiceEnvironmentVariable()

- Always normalize service names explicitly to match docker_compose_domains lookup
  This makes the code clearer and more maintainable

- Remove unused $fqdnWithPort variable assignments in both applicationParser and serviceParser
  The variable is calculated but never used - only $urlWithPort and $fqdnValueForEnvWithPort are needed

These changes are code cleanup only - no behavior changes or breaking changes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:45:42 +01:00
Andras Bacsai
30d206e7b9 feat: add async prerequisite installation with retry logic and visual feedback
This commit enhances the boarding flow to handle prerequisite installation asynchronously with proper retry logic and user feedback:

- Add retry mechanism with max 3 attempts for prerequisite installation
- Display live installation logs via ActivityMonitor during boarding
- Reset ActivityMonitor state when starting new activity to prevent stale event dispatching
- Support dynamic header updates in ActivityMonitor
- Add prerequisitesInstalled event handler to revalidate after installation completes
- Extract validation logic into continueValidation() method for cleaner flow
- Add unit tests for prerequisite installation logic

This improves UX by showing users real-time progress during prerequisite installation and handles installation failures gracefully with automatic retries.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:44:04 +01:00
majcek210
612b51ef00
Update volume mounts in paymenter.yaml
Done my research and this are the right volumes for paymenter on coolify
2025-11-23 12:08:21 +01:00
majcek210
a2ca50b4bf
Update paymenter.yaml volumes configuration 2025-11-22 15:24:05 +01:00
majcek210
9a58096655
Fix volume paths in paymenter.yaml 2025-11-22 15:21:19 +01:00
majcek210
928e96258a
Update paymenter image version to v1.4.5
Change paymenter image varsion from latest > 1.4.5
2025-11-22 14:55:50 +01:00