Commit Graph
1506 Commits
Author SHA1 Message Date
Andras Bacsai 3034e89edb feat(preview-env): add production variable fallback for docker-compose
When preview environment variables are configured, fall back to production
variables for keys not overridden by preview values. This ensures variables
like DB_PASSWORD that exist only in production are available in the preview
.env file, enabling proper ${VAR} interpolation in docker-compose YAML.

Fallback only applies when preview variables are configured, preventing
unintended leakage of production values when previews aren't in use.

Also improves UI by hiding the Domains section when only database services
are present, and simplifies the logs view by removing status checks.
2026-03-25 13:26:50 +01:00
Andras Bacsai e65ad22b42 refactor(breadcrumb): optimize queries and simplify state management
- Add column selection to breadcrumb queries for better performance
- Remove unused Alpine.js state (activeRes, activeMenuEnv, resPositions, menuPositions)
- Simplify dropdown logic by removing duplicate state handling in index view
- Change database relationship eager loading to use explicit column selection
2026-03-20 00:02:18 +01:00
Andras Bacsai 23f9156c73 Squashed commit from 'qqrq-r9h4-x6wp-authenticated-rce' 2026-03-18 13:53:01 +01:00
Andras Bacsai f896d47b99 feat(environment-variable): add placeholder hint for magic variables
Add a placeholder message to the comment field indicating when an
environment variable is handled by Coolify and cannot be edited manually.
2026-03-17 10:11:26 +01:00
Andras Bacsai ed3b5d096c refactor(environment-variable): remove buildtime/runtime options and improve comment field
Remove buildtime and runtime availability checkboxes from service-type environment variables across all permission levels. Always show the comment field with a conditional placeholder for magic variables instead of hiding it. Add a lock button for service-type variables.
2026-03-17 09:52:29 +01:00
Andras Bacsai 15d6de9f41 fix(storages): hide PR suffix for services and fix instantSave logic
- Restrict "Add suffix for PR deployments" checkbox to non-service
  resources in both shared and service file-storage views
- Replace condition `is_preview_deployments_enabled` with `!$isService`
  for PR suffix visibility in storages/show.blade.php
- Fix FileStorage::instantSave() to use authorize + syncData instead
  of delegating to submit(), preventing unintended side effects
- Add $this->validate() to Storages/Show::instantSave() before saving
- Add response content schemas to storages API OpenAPI annotations
- Add additionalProperties: false to storage update request schema
- Rewrite PreviewDeploymentBindMountTest with behavioral tests of
  addPreviewDeploymentSuffix instead of file-content inspection
2026-03-16 21:10:00 +01:00
Andras Bacsai add16853a8 feat(preview): add configurable PR suffix toggle for volumes
Add `is_preview_suffix_enabled` flag to `local_file_volumes` and
`local_persistent_volumes` tables, allowing per-volume control over
whether a `-pr-N` suffix is appended during preview deployments.

Defaults to `true` to preserve existing behavior. Users can disable
it for volumes containing shared config or repository scripts that
should not be isolated per PR.
2026-03-16 14:54:22 +01:00
Andras BacsaiandGitHub 2b65eaa2b4 feat(ui): add log filter based on log level (#8784) 2026-03-12 13:39:18 +01:00
Andras Bacsai 5c5f67f48b chore: prepare for PR 2026-03-10 20:37:22 +01:00
Andras Bacsai 27e2680d70 Merge remote-tracking branch 'origin/next' into fix/configurable-proxy-timeout 2026-03-10 10:01:46 +01:00
Andras Bacsai 19d1662fac Merge remote-tracking branch 'origin/next' into fix/preview-deployments-invisible 2026-03-10 09:44:31 +01:00
Andras Bacsai 5b701ebb07 refactor(application-source): use Laravel helpers for null checks
Replace is_null() and !is_null() with blank() and filled() helper functions
for better readability and Laravel idiomatic style.
2026-03-09 17:23:34 +01:00
Andras Bacsai 01aa534556 fix(application-source): support localhost key with id=0
Previously, the view checked $privateKeyId with ! operator, which
incorrectly treats 0 (localhost key) as falsy. Changed to explicit
is_null() checks to distinguish between null (no key) and 0 (localhost).
Added test coverage for both cases.
2026-03-09 17:20:33 +01:00
Andras Bacsai 4615cfd007 Merge remote-tracking branch 'origin/next' into fix/configurable-proxy-timeout 2026-03-06 08:04:07 +01:00
Andras Bacsai 380a34c7d6 Merge remote-tracking branch 'origin/next' into fix/preview-deployments-invisible 2026-03-06 08:03:45 +01:00
ShadowArcanist a73360e503 feat(ui): add log filter based on log level 2026-03-06 10:53:30 +05:30
ShadowArcanist 1f5395dd84 fix(ui): info logs were not highlighted with blue color 2026-03-06 10:06:50 +05:30
Andras BacsaiandGitHub 8dfb393de0 chore(ui): add container labels header (#8752) 2026-03-05 14:19:00 +01:00
Cinzya 80be2628d0 chore(ui): add labels header 2026-03-03 20:57:03 +01:00
Andras Bacsai d9e39ba211 Merge remote-tracking branch 'origin/next' into env-var-descriptions 2026-02-28 00:09:54 +01:00
Brendan G. Lim 040658c142 fix: address review feedback on proxy timeout
- Fix disable logic: timeout editable when proxy is stopped
- Remove hardcoded proxy_connect_timeout (60s is nginx default)
- Remove misleading '0 for no timeout' helper text
- Add min:1 validation for timeout value
2026-02-27 14:24:04 -08:00
Brendan G. Lim 30c1d9bbd0 feat: add configurable timeout for public database TCP proxy
Adds a per-database 'Proxy Timeout' setting for publicly exposed databases.
The nginx stream proxy_timeout can now be configured in the UI, defaulting
to 3600s (1 hour) instead of nginx's 10min default. Set to 0 for no timeout.

Fixes #7743
2026-02-26 21:12:58 -08:00
Andras Bacsai 609cb4190e fix(health-checks): sanitize and validate CMD healthcheck commands
- Add regex validation to restrict allowed characters (alphanumeric, spaces, and specific safe symbols)
- Enforce maximum 1000 character limit on healthcheck commands
- Strip newlines and carriage returns to prevent command injection
- Change input field from textarea to text input in UI
- Add warning callout about prohibited shell operators
- Add comprehensive validation tests for both valid and malicious command patterns
2026-02-25 11:28:33 +01:00
Aditya TripathiandGitHub 036f565785 Merge branch 'next' into feat/healthcheck-cmd 2026-02-24 22:22:02 +05:30
Maurits de Ruiter 8cc10ab10a fix: enable preview deployment page for deploy key applications 2026-02-23 21:08:43 +01:00
Andras Bacsai 6cacd2f0ff chore: prepare for PR 2026-02-23 14:17:15 +01:00
Aditya TripathiandGitHub 04283a03a0 Merge branch 'next' into feat/healthcheck-cmd 2026-02-21 06:54:29 +05:30
peaklabs-dev 807cb4349d feat(ui): use 2 column layout 2026-02-04 17:17:51 +01:00
peaklabs-dev 4dc1ae8bf5 feat(ui): add official postgres 18 support
- add postgres 18 support
- add pgvector 18 support
- add postgres 16 as well as it is still widely used
2026-02-04 00:32:30 +01:00
MailoandGitHub 3a60561a34 fix(ui): horizontal overflow on application and service headings (#7970) 2026-01-19 19:27:19 +01:00
peaklabs-dev 7aa41675ab fix(ui): modal issues
- tooltips can not extend outside the modal causing a scrollbar to appear
- modals are to wide
- remove unused minWidth and maxWidth props
2026-01-19 18:19:35 +01:00
Andras Bacsai 95091e918f fix: optimize queries and caching for projects and environments 2026-01-16 11:51:26 +01:00
Aditya TripathiandGitHub 33d5879160 Merge branch 'next' into feat/healthcheck-cmd 2026-01-15 16:37:54 +05:30
ShadowArcanistandGitHub 728396f410 fix(ui): improve volume mount warning for compose applications (#7947) 2026-01-13 20:40:00 +01:00
Dominic SchmidandGitHub d4957ff3d1 feat(ui): improve sidebar menu items styling (#7928) 2026-01-12 23:09:56 +01:00
AlexzvnandGitHub a5537119b9 fix(ui): empty network destinations when cloning a resource (#7309) 2026-01-06 14:14:56 +01:00
peaklabs-dev 86ffef2df5 feat(ui): add port mapping format to helper and fix typo 2026-01-05 21:39:39 +01:00
Aleksander LisandGitHub 7c075551ff fix(log): preserve leading whitespace in logs (#7879) 2026-01-05 21:32:34 +01:00
571bbe235d feat(ui): make git repository dropdown searchable (#7064)
Co-authored-by: 🏔️ Peak <122374094+peaklabs-dev@users.noreply.github.com>
2026-01-04 19:28:15 +01:00
ShadowArcanistandGitHub cc3e39db1f feat(ui): show server name on resource card (#7417) 2026-01-04 17:19:01 +01:00
Andras Bacsai 796bb3a19d feat: Refactor service database management and backup functionalities
- Introduced a new sidebar component for service database navigation.
- Updated routes for database import and backup functionalities.
- Refactored the database import view to improve clarity and maintainability.
- Consolidated service application and database views into a more cohesive structure.
- Removed deprecated service application view and integrated its functionalities into the service index.
- Enhanced user experience with modal confirmations for critical actions.
- Improved code readability and organization across various components.
2026-01-02 16:29:48 +01:00
Andras Bacsai 360a82ec5d Merge branch 'next' into feat/servicedatabase-restore 2026-01-02 13:45:15 +01:00
Andras BacsaiandGitHub b448b08058 fix: prevent metric charts from freezing on page navigation (#7848) 2026-01-02 13:13:45 +01:00
Andras BacsaiandClaude Haiku 4.5 a8aa452475 fix: prevent metric charts from freezing when navigating with wire:navigate
Wraps inline chart initialization scripts in IIFEs to create local scope for variables. This prevents "Identifier has already been declared" errors when Livewire's SPA navigation re-executes scripts, allowing smooth navigation between metrics pages without page refresh.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:36:17 +01:00
Andras BacsaiandGitHub 006e787e2a feat(logs): Add loading indicator to download all logs buttons (#7847) 2026-01-02 12:05:14 +01:00
Andras BacsaiandGitHub 4d4254b591 claude fix test (#7825) 2026-01-02 12:04:23 +01:00
Andras BacsaiandClaude Haiku 4.5 a980fd460a feat(logs): Add loading indicator to download all logs buttons
Add visual feedback when downloading all logs in both container and deployment log views. Users now see an animated spinner and "Downloading..." text, preventing multiple concurrent downloads and improving UX during long operations.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-02 12:04:17 +01:00
Andras Bacsai 770ce2d327 Refactor application general settings view for improved readability and maintainability
- Adjusted indentation and formatting for better code clarity.
- Simplified conditional statements and removed unnecessary null checks.
- Enhanced user interface elements for Docker Compose and Dockerfile configurations.
- Improved handling of deployment commands and network settings.
- Updated helper texts for better user guidance.
2025-12-31 11:44:08 +01:00
Claude bbb2aa9ad4 feat(logs): Add dropdown to download displayed or all logs
Users can now choose between downloading only the currently displayed
logs or fetching and downloading all available logs from the container.

Changes:
- Add downloadAllLogs() method that fetches all logs without limit
- Replace download button with dropdown menu
- Options: "Download displayed logs" and "Download all logs"

Addresses #7803
2025-12-29 17:59:23 +00:00
Claude b484c0cc25 fix(logs): Remove hardcoded 2000 line display limit
The log viewer was artificially limiting display to 2000 lines
regardless of user's requested amount. Users could request 10k, 40k,
or 50k lines but only 2000 were ever shown.

Changes:
- Remove the hardcoded $maxDisplayLines = 2000 limit in the view
- Add MAX_LOG_LINES constant (50,000) in GetLogs component
- Enforce maximum limit in backend to prevent extremely large requests
- Update input field with max attribute and tooltip

Fixes #7803
2025-12-29 17:52:35 +00:00