18832 Commits
Author SHA1 Message Date
Andras Bacsai 4f56c81236 feat(release): bump coolify version to v4.7.1 v4.7.1 2026-11-09 14:57:30 +01:00
Andras BacsaiandClaude Opus 5.5 c93b765975 fix(proxy): route maintenance mode through custom container labels
Closes #12498

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 14:53:10 +01:00
Andras BacsaiandClaude Opus 5.5 957c01fcc8 fix(image-scan): ship the scanner templates and show the scan error log
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 14:44:55 +01:00
Andras BacsaiandClaude Opus 5.5 ab4964ea85 fix(ui): keep warning callouts yellow in custom themes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 14:44:54 +01:00
Andras BacsaiandClaude Opus 5.5 79dabc1972 chore(marketing): add the release update video kit
Add scripts that take screenshots of a dev instance, render slides, and
join them into a video, plus PROMPT.md with the steps for an AI agent.
Keep the v4.7 spec and contact sheet so older videos can be checked and
rendered again. Videos and build output stay out of git.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 13:11:28 +01:00
Andras Bacsai b370c7ea6a fix(image-scan): show the Vulnerabilities page again (#12497) 2026-11-09 13:11:02 +01:00
Andras BacsaiandClaude Opus 5.5 f6b2fdc113 fix(image-scan): show the Vulnerabilities page again
The view still read the $allowed variable that the component no longer
passes after the instance switch was removed, so /vulnerabilities
returned a 500 error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 13:02:39 +01:00
Andras Bacsai eaaaf7a713 feat(release): bump coolify version to v4.7.0 v4.7.0 2026-11-09 12:35:03 +01:00
Andras Bacsai 3c349abde3 fix(ui): make banners readable in light mode (#12495) 2026-11-09 12:22:01 +01:00
Andras Bacsai bf648b9a37 WIP (#12493) 2026-11-09 12:21:02 +01:00
Andras Bacsai 0c74db833d Merge remote-tracking branch 'origin/main' into next 2026-11-09 11:39:07 +01:00
Andras BacsaiandClaude Opus 5.5 c589449c3e fix(ui): make banners readable in light mode
Refs #12494

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 11:32:10 +01:00
Andras BacsaiandClaude Opus 5.5 a982944023 fix(ui): make banners readable in light mode
The shared banner had a dark background and no text colour, so the
subscription and server limit banners were unreadable in light mode.
Use a light surface with dark text in light mode and keep the dark look.

Refs #12494

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 11:21:28 +01:00
Andras Bacsai 2e63c2e57e docs(agents): document editing advisory comments and linking commit SHAs
Add the gh api PATCH command for editing a security advisory comment, and note that advisory comments do not auto-link bare commit SHAs, so they must be written as Markdown links to the commit URL.
2026-11-09 11:20:06 +01:00
Andras Bacsai 813c4472a7 Merge remote-tracking branch 'origin/main' into next 2026-11-09 11:11:03 +01:00
Andras Bacsai 09f4aedb43 docs(agents): add security advisory comment workflow via gh api
Document replying to security advisories through comments instead of
editing the advisory description, including the gh api commands to
list and post comments and the note that comments cannot be deleted.
2026-11-09 11:07:01 +01:00
Andras Bacsai b31c06a7eb fix(team): build invite links from instance URL, not request host
When no instance domain is set, invitation links were built from the
request host, which a client can spoof through a forwarded Host header.
Links now always use base_url(). The fallback test now forces a spoofed
root URL and checks that the link ignores it.
2026-11-09 11:06:52 +01:00
Andras BacsaiandClaude Opus 5.5 a44193b6e4 fix(mcp): return only service fields from get_service
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 11:04:47 +01:00
Andras BacsaiandClaude Opus 5.5 5ff94dbd7a fix(api): limit nested server data to team-wide tokens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 11:03:22 +01:00
Andras Bacsai 132dd0e34c test(api): cover member access to the cloud provider token list
A team member with a read token gets 403 on GET /api/v1/cloud-tokens
and an error from the MCP cloud_provider list_tokens action.
2026-11-09 10:59:00 +01:00
Andras Bacsai f4cbf63e76 fix(api): validate the docker tag of deploy requests
Use the same tag format check as the preview API.
2026-11-09 10:58:08 +01:00
Andras BacsaiandClaude Opus 5.5 769bddb326 fix(api): require write permission to choose a preview commit
- Treat a commit value on the preview endpoint as a preview change
- Update the API docs, the MCP tool description, and the change file
- Add a test case

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 10:50:51 +01:00
Andras Bacsai ef8df44eb6 fix(scheduled-tasks): drop leftover failure_count and auto_disabled_at
Instances that ran a since-removed migration from an earlier version of
task auto-disable still have these columns. The current implementation
uses consecutive_failures, failing_since, and disabled_reason instead.
The migration checks that each column exists before dropping it.
2026-11-09 10:27:44 +01:00
Andras Bacsai 2466ccb8fd fix(service): check images before stopping a service on restart
Closes #12485
2026-11-09 10:18:55 +01:00
Andras Bacsai adec9911cf Merge remote-tracking branch 'origin/main' into next 2026-11-09 10:16:31 +01:00
Andras BacsaiandClaude Opus 5.5 acacbf9747 fix(compose): report an empty Compose file as empty, not as not found
Closes #12477

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 10:15:38 +01:00
Andras BacsaiandClaude Opus 5.5 65dba32385 feat(server-security): scan host OS packages for vulnerabilities (#12482)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 10:12:56 +01:00
Andras BacsaiandClaude Opus 5.5 a70e856882 test: remove tests that do not test behavior and strengthen weak ones
- Remove tests that only check markup, CSS, static text, wire:key strings,
  framework behavior, copied app logic, or expect(true)
- Replace source-grep and Reflection checks of security fixes with tests
  that run the real code (shell quoting, locked properties, 403 checks,
  webhook fork trust, log redaction, Sentinel token cleanup)
- Assert response bodies and unchanged data on API error paths
- Run the Traefik version job through handle() instead of private methods
- Update stale tests for scheduled task props, the default Postgres image,
  and the disabled transfer link of unvalidated servers

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 08:47:56 +01:00
Andras BacsaiandClaude Opus 5.5 de75bbe004 fix(upload): return 404 for a database the team cannot open
The backup upload returned a hard-coded 500 when the database uuid was
unknown or belonged to another team. It now returns 404 with the same
JSON error shape that the import form reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 08:47:56 +01:00
peaklabs-dev 6eeea653fe docs: remove the pull request links from the change files 2026-11-09 00:34:27 +01:00
peaklabs-dev 9667e070c5 docs(agents): link only issues in change files 2026-11-09 00:34:27 +01:00
peaklabs-dev 32d41d0353 docs: describe the changes of v4.7 in change files 2026-11-09 00:29:50 +01:00
peaklabs-dev b2617e7539 feat(release): write the changelog from change files 2026-11-09 00:29:50 +01:00
peaklabs-dev cd975b49aa docs(release): merge next into main only on the day of the release 2026-11-09 00:23:22 +01:00
🏔️ Peak 91985acf42 build(image): remove the unused MinIO client from the coolify image (#12491) 2026-11-09 00:09:50 +01:00
Andras BacsaiandClaude Opus 5.5 3f51c251c0 fix(git): show the full Git error reason on a failed repository read
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 21:02:46 +01:00
Andras Bacsai 61b10664c4 refactor(security): remove published APP_KEY request blocking middleware
Drop the RejectPublishedAppKey middleware and its registration in the
HTTP kernel, so requests are no longer refused with a 503 when APP_KEY
or APP_PREVIOUS_KEYS matches a key shipped in the repository.

Rename PublishedAppKeyTest to DecryptWithoutClassesTest and keep only
the checks that Sentinel tokens and team channel payloads are decrypted
without unserializing objects.
2026-11-08 18:24:02 +01:00
Andras Bacsai c75e7078b7 fix(access): restrict preview changes, rollbacks, and repo URL updates
- Require the write permission and update policy to open a preview or
  change its pull request URL, git type, or docker tag via the API;
  deploy-only tokens can only redeploy an existing preview
- Reject rollbacks to commits that are neither a listed rollback image
  nor a successful production deployment (GetRollbackImages::allows)
- Validate git_repository with ValidGitRepositoryUrl when it changes on
  application update
- Add RejectPublishedAppKey global middleware
- Show a "still starting" message when the root setup window is pending
- Document the new 403 responses and constraints in the OpenAPI spec
- Add tests for the new checks
2026-11-08 17:26:34 +01:00
Andras Bacsai 3c588d482d fix(access): apply API token limits in more permission checks
- Use the limits of the API token in more permission checks.
- Show a clearer message when a token limit blocks a change.
- Describe API tokens with limits in SECURITY.md.
2026-11-08 15:53:02 +01:00
Andras BacsaiandClaude Opus 5.5 1d21a27812 refactor(image-scan): remove the instance switch and the vulnerability DB URL
Scanning is now controlled per server and per app. Each server downloads
the Grype database from its default source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 15:49:05 +01:00
Andras Bacsai 3b64cbc379 fix(access): clearer credential message and backup S3 defaults
- Show a clear message when team-wide write access is needed to use
  team credentials.
- Reset the S3 selection on the backup page when a change is not allowed.
- Do not save database backups to S3 when the API request does not
  send save_s3, as the API documentation says.
2026-11-07 22:04:44 +01:00
Andras Bacsai 8011d0d6ab fix(access): check server and credential access for scoped members (#12488) 2026-11-07 18:59:17 +01:00
🏔️ Peak 29aa42b982 chore(docker): use the multi-platform Node.js image again (#12483) 2026-11-06 23:50:21 +01:00
Andras Bacsai eb5f238a45 fix(server): show the disabled server message on the localhost page
Closes #12475
2026-11-06 19:52:05 +01:00
Andras Bacsai f7ea962145 fix(server): enable disabled self-hosted servers again on validation
On self-hosted, a validation that connects now clears force_disabled. The unreachable cleanup skips the localhost server, and the server page explains why a server is disabled. Cloud and transferred servers stay disabled.

Closes #12475
2026-11-06 18:57:06 +01:00
Andras BacsaiandClaude Opus 5.5 5af4715b8a feat(ui): put the star button after the status in the top bar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:29:43 +01:00
Andras BacsaiandClaude Opus 5.5 c648f4ec6a feat(ui): star servers and resources for quick access on the dashboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:16:25 +01:00
Andras BacsaiandClaude Opus 5.5 cab5ae9903 feat(ui): show server usage on mobile in the dashboard server table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:16:16 +01:00
Andras BacsaiandClaude Opus 5.5 1652a1d091 feat(ui): show the finish time of recent deployments on the dashboard
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 17:46:54 +01:00
Andras Bacsai d640aa15f5 docs(changelog): add Orbit template, maintenance page, and port fix
Add changelog entries for the Orbit service template, moving
maintenance mode to its own page with a confirmed toggle, and no
longer warning about the port when a service domain has no port.
2026-11-06 15:24:55 +01:00