Commit Graph
18808 Commits
Author SHA1 Message Date
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 adec9911cf Merge remote-tracking branch 'origin/main' into next 2026-11-09 10:16:31 +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
Andras BacsaiandClaude Opus 5.5 973cd8684a feat(ui): show the logo and name on the resource creation screen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:23:07 +01:00
Andras Bacsai abea0747ed feat(service): add Orbit template 2026-11-06 15:22:21 +01:00
Andras BacsaiandClaude Opus 5.5 17a9fa624e feat(ui): move maintenance mode to its own page with a confirmed toggle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:20:41 +01:00
Andras BacsaiandClaude Opus 5.5 53e21abe97 fix(services): do not warn about the port when a domain has no port
An empty port routes to the required port, so it needs no confirmation.
The edit dialog shows the effective port, the warning buttons name the
ports, and domain conflicts ignore the container port.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:17:35 +01:00
Andras BacsaiandClaude Opus 5.5 b1a20fabd4 fix(ui): hide tooltips on close and dismiss buttons
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:12:41 +01:00
Andras BacsaiandClaude Opus 5.5 e614e680c0 docs(agents): document the changelog format
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:03:51 +01:00
Andras BacsaiandClaude Opus 5.5 9781921217 fix(dev): keep QEMU servers that still have resources on seed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:03:46 +01:00
Andras Bacsai 71d33863af docs(changelog): condense Unreleased breaking and security entries
Group the Unreleased breaking changes and security notes into short,
bolded summary bullets with combined PR links, replacing the long
per-change descriptions.
2026-11-06 14:53:24 +01:00
Andras Bacsai 54da974045 chore(upstream): bump Sentinel to 1.1.5 2026-11-06 14:50:35 +01:00
Andras Bacsai 757a049002 docs(changelog): add breaking changes and security notes to Unreleased
Document the breaking changes for queued webhook deployment cancellation,
cloud provider token API access, and the new Resend sender fields.

List the security changes: SSH host key pinning for servers and Git hosts,
Ed25519 key generation and key rotation, hardened SSH options, hidden
private keys, Sentinel token handling, terminal session expiry, SMTP and
DNS validation, stricter team access checks, audit event privacy, and
API rate limiting for failed requests.
2026-11-06 14:44:12 +01:00
033f0c84da v4.7 (#12478)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
2026-11-06 14:25:02 +01:00
Andras Bacsai c8497912ba fix(terminal): turn off the idle limit by default
A long command without output (for example pg_restore) was ended after 30 minutes.
Sessions still end on lost access and at the maximum duration.
2026-11-06 13:44:03 +01:00
Andras Bacsai d5ac1ba27e fix(storage): require a saved SFTP host key, saved only by an admin validation
- Restores, downloads, and the import check refuse an SFTP storage without a saved host key.
- Only Validate, Save, Create, and the API validate endpoint save a new key; backup and
  revalidation jobs do not.
- An endpoint change or a host key reset marks the storage unusable.
- Save the key only when the endpoint did not change during the connection test.
2026-11-06 13:44:03 +01:00
Andras Bacsai 136e76abc2 fix(github): sync GitHub Deployments after bulk status changes, off the deploy queue
- Queue a status sync for deployments that Init, fail_undispatchable_deployment, and
  superseded cancels change with a query update, so GitHub does not show them as
  in progress forever.
- Run SyncGithubDeploymentJob on the default queue with 10 s GitHub request timeouts
  and a 100 s job timeout, so a slow GitHub cannot delay deployments.
2026-11-06 13:44:03 +01:00
Andras Bacsai 01df5fff95 fix(image-scan): let the deploy gate wait for a running background scan
The gate treated a busy server scan lock as a scan error after 120 s, so a gated
deploy with Block failed while another scan ran. It now waits in steps, bounded by the
deployment job timeout, and still honors a cancel. The lock TTL now covers the sum
of the scan step timeouts.
2026-11-06 13:44:03 +01:00
Andras Bacsai 06ff1e1e31 fix(email): keep saved provider on failed switch, fall back to SMTP sender for Resend
- Restore the saved SMTP/Resend flags when a provider switch fails validation, so a
  later event toggle cannot save a half-configured Resend (team and instance pages).
- Resend uses smtp_from_* when resend_from_* is blank, as before the Resend sender fields.
- Require the Resend sender only when Resend is enabled.
- Replace wire:confirm in the SMTP server picker with x-modal-confirmation.
2026-11-06 13:44:03 +01:00
Andras Bacsai 7c348d6239 Merge remote-tracking branch 'origin/main' into next
# Conflicts:
#	app/Livewire/Project/Resource/Create.php
2026-11-06 12:45:11 +01:00
Andras Bacsai b7dc2e435b feat(database): default new Redis databases to the Valkey image
Change the standalone_redis image column default to
valkey/valkey:9-alpine. Existing databases keep their current image.
Update the API docs, OpenAPI specs and image helper text to name Valkey
as the default and redis:8 as the Redis example.

Also restyle the status badges and database image cards on the new
resource page.
2026-11-06 12:44:00 +01:00
Andras Bacsai e540a1a978 Merge remote-tracking branch 'origin/main' into next 2026-11-06 12:43:10 +01:00
Andras Bacsai 1703265353 feat(image-scan): manage image scanning and read scan results via API and MCP 2026-11-06 12:41:09 +01:00
Andras Bacsai 145569bea6 fix(db): bump Supabase and PostGIS default images
Supabase PostgreSQL 17.4.1.032 -> 17.11.0.018, PostGIS 17-3.5-alpine -> 18-3.7-alpine.
2026-11-06 12:39:53 +01:00
Andras BacsaiandClaude Opus 5.5 813bc72af4 fix(ui): shorten database descriptions on the new resource page
The PostgreSQL, MongoDB, and ClickHouse descriptions were cut off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 52d7d88fd6 docs(api): document Valkey images for Redis databases
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00
Andras BacsaiandClaude Opus 5.5 41877198b3 feat(database): offer Valkey as an image of the Redis database type
When a user creates a Redis database, a new step asks for Redis 7.2
(default) or Valkey 9. Valkey uses the same binaries (redis-* symlinks),
config, and data format, so the Redis start action runs it unchanged.
The UI now names the type "Redis / Valkey" and shows a combined logo,
and global search accepts "new valkey".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 12:37:36 +01:00