Commit Graph
18542 Commits
Author SHA1 Message Date
peaklabs-dev 782fb5d6bc docs: add the split Coolify helper changes to CHANGELOG.md 2026-11-02 00:03:45 +01:00
peaklabs-dev 06ad71439c build: move the helper image to coollabsio/coolify-helper
- Docker Compose builds the development helper from the main branch of that repository, scripts/dev-helper from there or from a local checkout
- Remove buildHelperImage from the settings, nothing calls it since its button was removed
2026-11-02 00:03:45 +01:00
🏔️ Peak babd21d51c feat: add new release process (#12357) 2026-11-02 00:03:41 +01:00
peaklabs-dev 8e200cc85d docs: add the new release process changes to CHANGELOG.md 2026-11-01 23:10:53 +01:00
peaklabs-dev 766a3b8fcb fix(release): preselect a minor for feat(release) changes
- only the commits that bump the Coolify version stay ignored, so a feat change to the release process asks for a minor
2026-11-01 19:37:43 +01:00
peaklabs-dev 9d1faa568e fix(release): version a pull request like a nightly of its base branch
- a pull request into next took the preview version in release.json, which still names 4.6.0-beta.1 once 4.6.0 is released, so its image sorted before 4.6.0
2026-11-01 19:37:43 +01:00
peaklabs-dev 7d1970a8c7 ci: build pull requests from branches that release
- a push that changes release.json stays unbuilt, the release workflow builds it
2026-11-01 19:37:42 +01:00
peaklabs-dev 4c78b72e9b ci: merge forward only after a release
- next gets one merge per release, named after its tag, and no merge of main commits that are not released yet
2026-11-01 19:37:42 +01:00
peaklabs-dev 0922ebe019 ci: name every step and job after what it does 2026-11-01 19:37:42 +01:00
peaklabs-dev 5f48d2fc54 ci: simplify the PR description of a conflicting merge 2026-11-01 19:37:41 +01:00
peaklabs-dev fc01324da5 ci(release): plan the moving tags in a step of their own 2026-11-01 19:37:41 +01:00
peaklabs-dev 2956929817 refactor(release): rename version.sh to plan-version.sh 2026-11-01 19:37:41 +01:00
peaklabs-dev e30cdd8325 refactor(release): put a v in front of the upstream version in tags
- An upstream line is tagged v<upstream>-v<version> in git instead of <upstream>-v<version>
- Coolify has no upstream lines, its git tags stay v<version>, and the v is stripped from the Docker image tags
2026-11-01 19:37:40 +01:00
peaklabs-dev a9044e87fc ci(build): skip pull requests from branches that release 2026-11-01 19:37:40 +01:00
peaklabs-dev 852fc041f3 ci: build main twice a day for testing
- Moves the main tag on ghcr.io when main changed since the last build, versioned after the stable version like 4.5.0.20261028.1
- Pushes no version tag, so the clean manifests workflow deletes the build it replaces
- version.sh --main picks the version from MAIN_VERSION and MAIN_REVISION, the labels of the build main points at
2026-11-01 19:37:40 +01:00
peaklabs-dev 161f4459a6 feat(release): let the image set the Coolify version
- The upgrade script removes COOLIFY_VERSION from .env, so a tag such as nightly or pr-1234 is never taken for the version
- install.sh still takes a version such as 4.6.0-beta.1, LATEST_IMAGE in .env picks the image and the image carries its version
2026-11-01 19:37:39 +01:00
peaklabs-dev e0fb2b3897 ci(release): build and release a nightly twice a day
- Remove other/nightly, the nightly channel uses the production files, so there are no longer two copies to keep in sync
- sync-cdn.sh --nightly syncs the files of the commit the nightly is built from to /coolify/nightly on the CDN, with the nightly version in its versions.json and in /coolify/release.json, and pushes them straight to main of coollabs-cdn
- version.sh picks the branch the nightly comes from, the release branch of the next version after the newest stable one or next, and names the version <preview>.<YYYYMMDD>.<N>
- The image is labeled with its version and commit, the nightly workflow reads both from the image nightly points at to count up N and to skip a run without a new commit
2026-11-01 19:37:39 +01:00
peaklabs-dev 2615559b5e ci: publish an image for every pull request
- version.sh --build appends the -pr.<number> suffix
2026-11-01 19:37:39 +01:00
peaklabs-dev 49590cf959 docs: rewrite RELEASE.md for the new release process 2026-11-01 19:37:36 +01:00
peaklabs-dev 02c370d34b ci: use the new release process
- build.yaml and release.yaml replace the main, next, rc, release and hotfix workflows
2026-11-01 15:16:40 +01:00
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