Commit Graph
18522 Commits
Author SHA1 Message Date
peaklabs-dev 8878ea0dcd ci: merge main and release branches forward
- Replaces sync-main-to-next, which merged main into next every 10 minutes
2026-11-01 15:16:01 +01:00
peaklabs-dev f1ab6069be feat(release): add release.sh to bump the Coolify version
- Asks for the stage of a prerelease and offers the versions the branch allows, the bump the commits need is preselected
- Sets the version in release.json, dates CHANGELOG.md for a stable release, commits and pushes
- undo-release.sh resets the release commit while it is not pushed
2026-11-01 15:15:54 +01:00
peaklabs-dev 8fac6ecf80 feat(release): add version.sh to decide releases and tags 2026-11-01 15:15:45 +01:00
peaklabs-dev 911e68ab27 feat(release): add release.json and upstream.json
- config/constants.php reads the Coolify and helper versions from them
- The image and sync-cdn.sh write versions.json from upstream.json, install.sh reads it by key
2026-11-01 15:15:33 +01:00
peaklabs-dev 7560d0745d feat(release): add sync-cdn.sh to sync a release to the CDN
- Replaces php artisan sync:cdn and its sync:cdn task in scripts/run
- --purge clears the Cloudflare cache sooner than the 10 minutes it keeps a file, with the token and zone from the environment or .env
2026-11-01 15:13:43 +01:00
peaklabs-dev 42382d8a4c docs: write CHANGELOG.md by hand instead of with git-cliff
- git-cliff did not work properly with the style of our commit messages, and the CHANGELOG.md it wrote did not fit our style
2026-11-01 15:10:56 +01:00
peaklabs-dev 8cd0dcb4fc chore: merge main into next 2026-10-30 23:41:32 +01:00
🏔️ Peak 751ecb91c5 ci: add a workflow to cleanup unused manifests (#12362) 2026-10-30 23:19:46 +01:00
peaklabs-dev fb0210f582 feat(scripts): harden the requests of the manifest cleanup
- passes the Docker Hub login to curl on stdin, which keeps it out of the process list
- checks the format of version ids and digests before a delete
2026-10-30 23:00:56 +01:00
peaklabs-dev b001e80fc9 feat(scripts): delete only versions older than a day
- a build pushes its images before the index that tags them, a run in between would see them as unused
- a push while the run reads the pages of versions shows one version twice, the list keeps it once so the second delete does not stop the run
2026-10-30 22:53:11 +01:00
peaklabs-dev 0375750aed feat(scripts): show the ghcr.io sizes in brackets 2026-10-30 22:37:03 +01:00
peaklabs-dev 4b7b9bc145 ci: run the workflow as a dry run first
- a manually triggered first run in CI uploads the full list of manifests to delete
- a later pull request makes the workflow hourly again
2026-10-30 22:37:03 +01:00
peaklabs-dev 200042e16b feat(scripts): check twice the delete limit on docker.io
- ghcr.io lists deleted versions for 30 days, a HEAD on docker.io for each would reach thousands per run, which could trigger rate limits
- twice the delete limit covers the last two runs, and manifests only docker.io has sort first, so a copy docker.io refused is deleted within two runs
2026-10-30 22:35:49 +01:00
peaklabs-dev c5d380a4c6 feat(scripts): give each registry a column in the lists
- docker_hub is undefined for a manifest ghcr.io has, as a HEAD on docker.io for every one of them could trigger rate limits
2026-10-30 22:35:49 +01:00
peaklabs-dev 26f8c990a5 ci: delete unused manifests every hour
- with a run every hour and 200 deletions per run the about 35,000 unused manifests on ghcr.io and docker.io are deleted in about 7 days, then the schedule goes back to every 2 weeks or every month
- a run deletes 200 at most, as GitHub allows an account 500 requests per hour and the ghrc.io PAT is an account level PAT
2026-10-30 22:35:47 +01:00
peaklabs-dev c5d53418da chore: merge main into next 2026-10-30 22:16:19 +01:00
peaklabs-dev 82f1f974f1 feat(scripts): add a script to delete unused manifests
- v3 and 4.0.0-beta.420.x do not follow semantic versioning, KEEP_TAG_EXCEPTIONS keeps them explicitly
2026-10-30 22:15:51 +01:00
Andras BacsaiandClaude Opus 5.5 a567a4b659 fix(analytics): key traffic tables so the pager works after lazy load
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 21:52:02 +01:00
Andras BacsaiandClaude Opus 5.5 e36c54c23c fix(logs): style lines by their declared level, not by error keywords
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 19:53:16 +01:00
🏔️ Peak 119ba74750 feat(database): bump the SQLite image to 3.54.1-v0.2.0 (#12400) 2026-10-30 18:42:14 +01:00
peaklabs-dev 3665482f77 feat(database): replace the SQLite uid note with a bind mount warning
- 3.54.1-v0.2.0 lets any uid write the databases, so the application no longer has to run as 65532 or root for improved compatibility, however the SQLite files are now writable by every user, so a bind mount instead of a docker volume mount opens them to every user on the host
2026-10-30 18:27:17 +01:00
peaklabs-dev f780d7429c feat(database): bump the SQLite image to 3.54.1-v0.2.0 2026-10-30 18:27:16 +01:00
Aditya Tripathi 157f3e0fae perf(metrics): fetch Fleet Metrics of all servers at the same time (#12389) 2026-10-30 17:53:15 +01:00
github-actions[bot] a0b56bc42f Merge remote-tracking branch 'origin/main' into next 2026-10-30 16:29:43 +00:00
Andras BacsaiandClaude Opus 5.5 a80f0c7ca8 fix(ui): name the deepest menu on the resource menu row
- Backup pages show Backup, and service sub-resources show their own
  name, because the row opens that menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:23:49 +01:00
Andras BacsaiandClaude Opus 5.5 49346aeb29 fix(ui): restore the main menu row that reopens the resource menu
- On a resource page, the main menu starts with a row that shows the
  resource name and opens the deepest resource menu again.
- Pass the resource name to registerMainNavContext() again.
- Document the row in DESIGN.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 17:21:08 +01:00
Andras Bacsai 091654ce7f feat(access): set member grants when inviting 2026-10-30 16:41:30 +01:00
Andras BacsaiandClaude Opus 5.5 8fcff6ebd1 fix(ui): consolidate table row actions into one menu pattern
Rows with two or more actions use a shared "..." menu (x-table.row-actions);
rows with one action keep a single icon button. Every actions column has an
"Actions" header. Removing a member and revoking an invitation now ask for
confirmation. Row and card icons are neutral in dark mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 16:14:46 +01:00
Andras Bacsai 1bacfd1966 fix(ui): use an outline trash icon for delete buttons 2026-10-30 16:14:02 +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 BacsaiandClaude Opus 5.5 f733ea4c1f fix(team): show the members sort dropdown only on small screens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:40:46 +01:00
Andras BacsaiandClaude Opus 5.5 3fac00e61b fix(api-tokens): list only scopes the member can give a token
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:17:37 +01:00
Andras BacsaiandClaude Opus 5.5 c1fc9466b2 fix(ui): unify dropdown menu styles and drop sort buttons that duplicate table headers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:16:41 +01:00
Andras Bacsai 34e872482d fix(api-tokens): float the permissions dropdown over the token modal 2026-10-30 15:16:40 +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 20466baae1 fix(team): remove the new team button from team settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:08:42 +01:00
Andras BacsaiandClaude Opus 5.5 a81bd5b9d2 fix(team): show member access summary under the email
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:33:03 +01:00
Andras Bacsai be80808138 fix(team): show 2FA off as a label instead of an X icon 2026-10-30 14:33:02 +01:00
Andras Bacsai cdff76a9b5 feat(api-tokens): keep issued tokens visible and improve scope selection 2026-10-30 14:27:58 +01:00
Andras Bacsai 18c5cf506b feat(api-tokens): edit a token in a modal that opens without a request 2026-10-30 14:27:58 +01:00
Andras BacsaiandClaude Opus 5.5 548dec65b7 feat(api-tokens): warn 7 days before a token expires
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 14:27:58 +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
Andras BacsaiandClaude Opus 5.5 76b89fa8e9 feat(api-tokens): edit token access and pause or resume tokens (#12396)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:20:19 +01:00
Andras BacsaiandClaude Opus 5.5 263eab5d27 feat(api-tokens): roll a token to replace its secret
Keep the description, permissions, scopes, and expiry. Move the row actions into a dropdown menu and measure the dropdown panel after it is shown, so menus at the right edge stay on screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:06:43 +01:00
github-actions[bot] edee5ccfd6 Merge remote-tracking branch 'origin/main' into next 2026-10-30 11:16:06 +00:00
Andras BacsaiandClaude Opus 5.5 b3ec26c3b1 fix(proxy): stop routing the Reverb HTTP API through the dashboard domain
The browser uses only the /app/{key} WebSocket. Laravel sends events to
Reverb over 127.0.0.1, so the generated Traefik and Caddy configs no longer
route /apps to port 6001, and the WebSocket rule only matches /app/.

Closes #12390

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 12:01:21 +01: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 3e2fff0609 fix(deployments): stop the build server helper when a deployment is cancelled
Save build_server_id as soon as a build server is selected, so the cancel
cleanup finds the helper container on the build server. Let the final
helper stop run after a cancel.

Closes #12383

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:43:04 +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
github-actions[bot] 82764c6d79 Merge remote-tracking branch 'origin/main' into next 2026-10-29 22:37:14 +00:00