Commit Graph
1109 Commits
Author SHA1 Message Date
Andras Bacsai 091654ce7f feat(access): set member grants when inviting 2026-10-30 16:41:30 +01:00
Andras Bacsai 6f1905b7b0 fix(access): enforce member grants on more actions
- Require write access on the target environment to clone or move a resource
- Check read access on shared variables before a reference is added or resolved
- Limit team credentials, git sources, and imports of other backups to team-wide writers
- Require the delete level for backup, volume, storage, and task deletes
- Require create access for previews, new projects, and git sources
- Use the token team for the access scope, and check team-wide access on Livewire updates
- Require instance admin to toggle the API and MCP server
- Hide server pickers and broadcast details from members without access
2026-10-30 16:11:10 +01:00
Andras Bacsai fb854a7cff fix(access): hide shared variables and actions that a member cannot use
- Check read access on the project or environment for shared variables
  pages, the canvas, and the sidebar, not only navigation access
- Require team-wide read for the server shared variables canvas API
- Open the environment variable editor read-only when the value is hidden
- Show the integration tokens button only to users who can open it
- Show disabled confirmation buttons as disabled, not as danger buttons
2026-10-30 15:14:02 +01:00
Andras BacsaiandClaude Opus 5.5 5116a93f42 feat(api): add DNS, integration token and secret manager management (#12374)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:37:32 +01:00
github-actions[bot] edee5ccfd6 Merge remote-tracking branch 'origin/main' into next 2026-10-30 11:16:06 +00:00
Andras Bacsai 98b7de0ea7 fix(api): accept the same port mappings as the UI
Closes #12388
2026-10-30 11:43:13 +01:00
Andras BacsaiandClaude Opus 5.5 4b541011c9 fix(api): hide locked values in resource and environment lists
Closes #12391

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:23:16 +01:00
b85a9197a1 chore: merge main into next (#12382)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 21:10:39 +01:00
Andras Bacsai b41ba87fff fix(application): reject Docker image names shared by building applications
Two applications that build the same Docker image name push the same
tags (commit SHA, latest, pr-<id>), so one can run the image of the
other. Deployments, the General form, and the API now reject such a
name for applications of the same team.

Closes #9834
2026-10-29 11:30:25 +01:00
Andras Bacsai 0894251de9 docs(api): remove unsupported preview and Highlight fields
Remove is_preview from service environment variable request schemas and
Highlight log drain fields from the generated OpenAPI specifications.
2026-10-29 08:57:20 +01:00
Andras BacsaiandClaude Opus 5.5 7324b5ca7b fix(webhooks): filter manual webhook applications by repository in SQL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:54:34 +01:00
Andras Bacsai 47ddb84edb Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next 2026-10-28 12:23:07 +01:00
Andras BacsaiandClaude Opus 5.5 fae2752346 fix(databases): show custom configuration only to admins (#12353)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:34:47 +01:00
62b2a99a70 chore: merge main into next (#12351)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:25:43 +01:00
Andras Bacsai e21be95392 Merge branch 'ghsa-v432-app-credentials-members' 2026-10-27 21:40:37 +01:00
Andras BacsaiandClaude Opus 5.5 9b9d1309d1 fix(api): allow write tokens to set manual webhook secrets
Webhook secrets are stored settings, so a token with the write ability can
set or change them, the same as GitHub App and GitLab App webhook secrets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:24:20 +01:00
Andras BacsaiandClaude Opus 5.5 eb030c6a22 fix(auth): limit application commands and configuration to admins and read:sensitive tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 21:19:20 +01:00
fe6c73726d chore: merge main into next (#12344)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 20:25:53 +01:00
Andras BacsaiandClaude Opus 5.5 56d0cf0e27 fix(servers): validate new cloud servers automatically when they are running
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:58:34 +01:00
Andras Bacsai 101444b8ca fix(log-drains): support Axiom edge domains and update Fluent Bit to 5.1
- Add an Axiom edge domain setting (default us-east-1) and use the /v1/ingest endpoint, so EU datasets work
- Remove the Highlight drain (service ended) and stop its running containers
- Update Fluent Bit from 2.0 to 5.1 and use the warn log level
- Restart running drains when the generated files change, with the new image pulled before the old container stops
- Show log drain validation errors under their fields

Closes #9898
2026-10-27 17:41:50 +01:00
Andras BacsaiandClaude Opus 5.5 18a85d37ba fix(hetzner): hide server types that are out of stock or deprecated in a location
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:35:22 +01:00
Andras Bacsai 1242353511 Merge remote-tracking branch 'origin/main' 2026-10-27 17:24:19 +01:00
Andras Bacsai bb1fada600 fix(clone): replace the clone suffix instead of adding one for each clone
Cloning a clone added another "-clone-<id>" to the name, so after about
seven clones the name was longer than 255 characters and the insert failed.

Closes #9976
2026-10-27 17:06:52 +01:00
Andras BacsaiandClaude Opus 5.5 1082b598c4 fix(api): return logs of stopped containers like the UI
The log endpoints found containers with `docker ps -a`, then rejected
every container that was not running. Remove that check, so failed
deployments can be diagnosed through the API. Without service_name,
the application endpoint prefers a running container. The old error
stays when no container exists.

Closes #9972

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:03:52 +01:00
Andras Bacsai e78659dfed fix(api): preserve omitted env var values and flags on PATCH (#12240) 2026-10-27 17:00:56 +01:00
Andras BacsaiandClaude Opus 5.5 bb24acd957 fix(http): retry connection failures of idempotent requests for all HTTP calls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:36:50 +01:00
Andras Bacsai 16c6de823b fix(cloud-providers): show why Hetzner, DigitalOcean, and Vultr API requests fail
Provider errors now return 502 with a safe message, the provider status, and
the provider error code instead of a bare 500. Hetzner no longer sends a create
request again after a 5xx, and a VPS that Coolify did not save is deleted.
2026-10-27 16:35:57 +01:00
Andras Bacsai 1039368491 fix(s3): support virtual-hosted-style URLs for S3 storages
Add a "Use path-style URLs" setting to S3 storages. It is detected from
the endpoint (Alibaba OSS, Tencent COS, Volcengine/BytePlus TOS), and the
connection test switches to virtual-hosted style when the provider
rejects path-style requests. Backups pass `--path off` to mc.

Closes #10347
2026-10-27 15:53:16 +01:00
Andras Bacsai 4f9ad86e52 fix(applications): allow environment variable references in image tags
Closes #10642
2026-10-27 15:05:23 +01:00
Andras BacsaiandClaude Opus 5.5 80df5431dc fix(api): document database and resource list responses in OpenAPI
Add a Database schema and use it for GET /databases and
GET /databases/{uuid}, type the GET /resources items, and stop
requiring both environment_name and environment_uuid on create
endpoints. KeyDB now returns database_type like the other engines.

Closes #10449

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 14:42:29 +01:00
Andras Bacsai 1a2a5362ad fix(security): secure remote command secrets and clone volume data 2026-10-27 09:47:18 +01:00
github-actions[bot] 7f65c6f303 Merge remote-tracking branch 'origin/main' into next 2026-10-26 18:49:11 +00:00
Andras Bacsai bafbc2e3d3 fix(api): regenerate proxy labels when exposed ports change (#12334) 2026-10-26 19:28:18 +01:00
Andras BacsaiandClaude Opus 5.5 4559d21b4c fix(api): save is_auto_deploy_enabled when creating Docker image and Dockerfile applications
Closes #12339

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 18:32:33 +01:00
github-actions[bot] 355e2f96e4 Merge remote-tracking branch 'origin/main' into next 2026-10-26 12:02:58 +00:00
Andras Bacsai 435645ce15 fix(api): write file storage content to server on PATCH (#12248) 2026-10-26 12:54:11 +01:00
Andras Bacsai 2be4f259b8 Merge remote-tracking branch 'origin/main' into automation/sync-main-to-next 2026-10-26 12:41:43 +01:00
Andras Bacsai d8fe02464b Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next 2026-10-26 12:40:59 +01:00
Andras Bacsai 2796609e96 feat(access): add scoped grants for team members and API tokens (#12329) 2026-10-26 12:13:20 +01:00
Andras Bacsai 8eb33ddf31 Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next 2026-10-26 12:12:20 +01:00
Andras Bacsai 25e2eae058 fix(webhooks): enforce GitHub app signatures in local environment 2026-10-26 12:08:15 +01:00
Andras Bacsai 7b83fa72eb feat(git): add HTTPS credentials for private repositories on custom Git hosts (#12328) 2026-10-26 10:50:24 +01:00
Andras BacsaiandClaude Opus 5.5 80ce0efe7e fix(api): use the Cloudflare client IP for allowed IPs and audit logs
Closes #12301

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 23:47:39 +01:00
Andras BacsaiandClaude Opus 5.5 b4a4df2706 fix(files): browse containers without a shell through a helper container
Closes #12305

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 23:33:24 +02:00
Andras Bacsai 0c9f89fafd fix(api): hide DB URLs in create responses without sensitive access (#12297) 2026-10-24 22:45:39 +02:00
Andras BacsaiandClaude Opus 5.5 d8d33c69ce fix(auth): hide locked and admin-only secrets in forms, compose, and the API
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 21:46:58 +02:00
Andras BacsaiandClaude Opus 5.5 ff4939a06f fix(clone): copy service volume data and keep file owners when cloning
The UI service clone iterated relation builders before parse() created
the sub-resources, so no volume copy ever ran. All service clone paths
now use clone_service(), which parses first and matches volumes by
mount path. VolumeCloneJob no longer forces chown 1000:1000.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:25:31 +02:00
Andras BacsaiandClaude Opus 5.5 d9a22ce10e fix(api): keep omitted flags when patching application env variables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 18:14:24 +02:00
Andras Bacsai 3b92248309 fix(webhook): match repositories under self-hosted sub-paths 2026-10-24 12:08:35 +02:00
Andras Bacsai a3712f8902 fix(deploy): stop 502 errors during rolling updates
Traefik and Caddy routes of applications now retry a failed connection
on another container, and the rolling update waits a configurable drain
time (default 5 seconds) after the new container is healthy before it
stops the old containers. The wait is skipped when no old container runs
or when the proxy labels changed, because the proxy drops a route that
two containers define differently.

Fixes #8627
2026-10-24 11:16:46 +02:00