Commit graph

16349 commits

Author SHA1 Message Date
Andras Bacsai
0b843bb07c
fix(compose): normalize service-name keys for domains and env vars (#11040) 2026-08-03 23:08:56 +02:00
Andras Bacsai
7b18777f06
feat(mcp): add resource diagnostics and deployment controls (#11000) 2026-08-03 23:08:11 +02:00
Andras Bacsai
c27a5ec41e
fix(backups): pin a single bracket-free IP for mc --resolve (#11028) 2026-08-03 19:28:02 +02:00
Andras Bacsai
3ba0e26262
fix(backups): pin all resolved addresses in one CURLOPT_RESOLVE entry (#11061) 2026-08-03 19:27:42 +02:00
Andras Bacsai
5c49dfab88
fix(sources): prevent 500 when deleting GitLab/GitHub apps (#11105) 2026-08-01 18:50:22 +02:00
Andras Bacsai
5b370713c3 fix(sources): prevent 500 when deleting GitLab/GitHub apps
After delete, Livewire still re-renders the source change view (modal
$refresh / morph). Policy @can checks then call isAdminOfTeam() with a
null team_id and throw a TypeError (HTTP 500) before the redirect.

Guard null team_id in GitlabAppPolicy and GithubAppPolicy, clear the
Livewire model after delete, and skip @can when the model is gone.
2026-08-01 18:34:38 +02:00
dwiyantop
75d3bd8354 fix(backups): pin all resolved addresses in one CURLOPT_RESOLVE entry
libcurl overrides an existing host:port DNS cache entry each time a new
one is added, so one entry per address left only the last pinned. That is
IPv6 whenever the target has AAAA records, which broke every request on
hosts without IPv6. Join them into one comma separated entry instead.
2026-07-28 04:10:41 +07:00
Marvin
12033e8091 fix(backups): pin a single bracket-free IP for mc --resolve
S3 backup uploads fail when the endpoint has an AAAA record: mc parses
--resolve values with netip.ParseAddr and rejects the bracketed IPv6
form. Its resolver map also keeps only one IP per host, so emit a single
entry, preferring IPv4, without brackets.
2026-07-24 07:24:44 +02:00
Andras Bacsai
f06bacc8e0
feat(services): add Buzz one-click service template (#11020) 2026-07-23 17:25:53 +02:00
Andras Bacsai
e560bdf9e0
fix(api): secure proxy config, clone volumes, and rollback tags (#11003) 2026-07-22 14:52:11 +02:00
Andras Bacsai
16972f6483
feat: GitLab App source (#10538) 2026-07-21 22:22:10 +02:00
Andras Bacsai
3a863378b1 fix(gitlab): hide source secrets from unauthorized users
Only persist the system-wide setting during instant saves, preventing
unvalidated source details from being stored.
2026-07-21 22:11:25 +02:00
Andras Bacsai
aeeb2665cd feat(github): add GitHub App connection testing 2026-07-21 21:54:15 +02:00
Andras Bacsai
b2fed043c5 feat(api): add GitLab Apps CRUD endpoints
There was no API for creating GitLab sources. Add /api/v1/gitlab-apps
list/create/update/delete with OpenAPI docs, sensitive-field redaction,
and feature coverage mirroring the GitHub Apps API.
2026-07-21 21:35:59 +02:00
Andras Bacsai
bce4f8d7b2 Merge remote-tracking branch 'origin/next' into fix/gitlab-self-hosted-oauth-clone 2026-07-21 21:31:43 +02:00
Andras Bacsai
add7d6ac10 fix(ui): show only Connected for finished GitLab sources 2026-07-21 21:23:44 +02:00
Andras Bacsai
53a42530d0 fix(ui): unify incomplete source status as Setup required
Use the same warning label for unfinished GitHub and GitLab sources,
and drop the host URL from the GitLab incomplete state line.
2026-07-21 21:22:57 +02:00
Andras Bacsai
3772a55458 fix(ui): show GitHub icon next to GitHub sources
Match the GitLab source cards by rendering the shared git-icon next to
GitHub App names on the sources index.
2026-07-21 21:21:58 +02:00
Andras Bacsai
43919ef4e0 fix(security): encrypt GitLab webhook token and mask input
Webhook secret was stored and shown as plaintext. Use a password field,
encrypt at rest (with legacy plaintext read support), and look up tokens
via findByWebhookToken so encrypted values still authenticate webhooks.
2026-07-21 21:21:04 +02:00
Andras Bacsai
94c3129ad1 fix(ui): show GitLab Connected badge beside title
Match application status layout by placing the Connected badge next to
the page heading, and drop the redundant Disconnect action (re-auth is
done via Connect after tokens expire or credentials are updated).
2026-07-21 21:19:48 +02:00
Andras Bacsai
9299340944 fix(ui): remove Public endpoint heading on GitLab setup 2026-07-21 21:16:10 +02:00
Andras Bacsai
1d63c1eaa2 fix(ui): move GitLab public endpoint controls into step 2
Keep OAuth app instructions first; put endpoint selection with the
credentials form so setup flows top-to-bottom without a separate section.
2026-07-21 21:13:22 +02:00
Andras Bacsai
eaa0b0156d feat(gitlab): add custom public endpoint for OAuth redirect
Match the GitHub App endpoint picker so self-hosted / tunnel setups can
select FQDN, IP, app URL, or a custom base. Redirect URI is derived as
{base}/webhooks/source/gitlab/redirect and persisted for token exchange.
2026-07-21 21:11:20 +02:00
Andras Bacsai
e962b81c4e fix(gitlab): reload application secret after save
The secret was always stored encrypted, but the setup form wiped the
input on every load. Load it back for admins (GitHub App parity) so a
reload no longer looks like a failed save.
2026-07-21 21:07:16 +02:00
Andras Bacsai
2450a32d6c fix(ui): rename GitLab setup submit button to Save 2026-07-21 21:02:41 +02:00
Andras Bacsai
ef4a18833e fix(ui): put Save Credentials beside Step 2 heading
Match the page action pattern used elsewhere by placing the submit
button next to the credentials step title instead of under the form.
2026-07-21 21:02:04 +02:00
Andras Bacsai
8782079dcc fix(ui): place GitLab group name after application secret
Keep the primary setup/credentials flow ordered as name, OAuth
credentials, then group name, with self-hosted URL fields advanced-only.
2026-07-21 21:00:34 +02:00
Andras Bacsai
fda8e91396 fix(ui): simplify GitLab source setup view
Use the red incomplete-setup alert like GitHub, keep name + OAuth
credentials front-and-center, and tuck GitLab URL / API / SSH / system
wide options into an Advanced accordion for self-hosted users.
2026-07-21 20:59:09 +02:00
Andras Bacsai
418287d511 fix(ui): align GitLab App create modal with GitHub
Match the GitHub create modal layout: intro copy, name/group row,
system-wide warning, self-hosted accordion (URL/API/SSH), and a
bottom Continue button instead of a duplicate header Save.
2026-07-21 20:54:59 +02:00
Andras Bacsai
253714a23e chore(dev): add npm clean script for docker compose teardown
Replace manual docker rm steps in DEVELOPMENT.md with `npm run clean`.
2026-07-21 12:13:13 +02:00
Andras Bacsai
6f557cf17f fix(security): enforce GitLab App authorization parity with GitHub
GitlabAppPolicy previously allowed any authenticated user to update,
delete, and create GitLab sources. Align it with GithubAppPolicy, require
Application create authorization on the private-repo wizard, and reject
OAuth callbacks from non-admins so members cannot escalate privileges.
2026-07-20 23:21:40 +02:00
Mike Chong
a26091de0a feat: self-hosted GitLab Apps OAuth integration
Adds self-hosted GitLab OAuth sources so Coolify can connect to a self-managed GitLab instance, list private repositories, clone over an OAuth token, and deploy (the GitLab counterpart to GitHub Apps).

Hardening: authenticated, one-time team-bound OAuth callback state; token redaction in deploy logs; custom host port/path kept in clone and ls-remote URLs; submodule OAuth auth; system-wide source selection. Covered by unit and feature tests.

cosigned by OpenAI Codex at M1 Max
2026-07-20 23:21:40 +02:00
Andras Bacsai
9d341d0bb9
feat(v5): add Inertia React infrastructure management (#10987) 2026-07-20 21:46:40 +02:00
Andras Bacsai
960bd0150e Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-20 13:44:02 +02:00
Andras Bacsai
160278c7eb ci: support main branch build and changelog workflows 2026-07-20 12:54:25 +02:00
Andras Bacsai
94a95cdf54 docs(release): clarify branch strategy and SHA build flow 2026-07-20 12:39:42 +02:00
Andras Bacsai
bd71b09946 fix(helpers): prevent warnings when loading database helpers 2026-07-20 12:18:06 +02:00
Andras Bacsai
ee36124300 Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-20 12:09:17 +02:00
Andras Bacsai
9b284973e1
feat(backups): add scheduled storage volume backups (#10946) 2026-07-20 12:04:50 +02:00
Andras Bacsai
bf72fd5d88 refactor(backups): centralize storage deletion guard 2026-07-19 23:20:46 +02:00
Andras Bacsai
68d719d02f Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-19 23:17:51 +02:00
Andras Bacsai
4e03be755d Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-19 23:16:00 +02:00
Andras Bacsai
72a0a57f0e fix(backups): enforce authorization and safe retention
- Gate volume backup retention and S3 controls by update permission
- Preserve backup records when S3 deletion fails
- Share SFTP download streaming with consistent missing-file handling
- Handle schedule creation errors and link service database backups
2026-07-19 23:15:55 +02:00
Andras Bacsai
24bc4b0462 docs(release): document SHA image promotion workflow 2026-07-19 23:13:33 +02:00
Andras Bacsai
99a8a96e7f Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-19 23:02:59 +02:00
Andras Bacsai
b53ae426b8
ci(release): promote SHA-tagged images on release (#10988) 2026-07-19 23:01:52 +02:00
Andras Bacsai
7716e65eea ci(release): promote SHA-tagged images on release
Publish branch builds under immutable commit SHA tags, then promote the
released image to its version tag and stable releases to latest.
2026-07-19 23:00:47 +02:00
Andras Bacsai
994eee8377 fix(backups): retain volume backups without server 2026-07-19 22:35:33 +02:00
Andras Bacsai
b97a97e955 Merge remote-tracking branch 'origin/next' into volume-backups-server-s3 2026-07-19 21:45:26 +02:00
Andras Bacsai
55bc13b3bf Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react 2026-07-19 21:40:13 +02:00