Andras Bacsai
d8fe02464b
Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next
2026-10-26 12:40:59 +01:00
Andras Bacsai
2796609e96
feat(access): add scoped grants for team members and API tokens ( #12329 )
2026-10-26 12:13:20 +01:00
Andras Bacsai
8eb33ddf31
Merge remote-tracking branch 'origin/next' into automation/sync-main-to-next
2026-10-26 12:12:20 +01:00
Andras Bacsai
7b83fa72eb
feat(git): add HTTPS credentials for private repositories on custom Git hosts ( #12328 )
2026-10-26 10:50:24 +01:00
Andras Bacsai
c465371356
Merge remote-tracking branch 'origin/main' into fix/secret-manager-request-timeout
...
# Conflicts:
# other/nightly/versions.json
# tests/Feature/Security/IntegrationTokenFormTest.php
# versions.json
2026-10-21 22:44:50 +02:00
Andras Bacsai and Claude Opus 5.5
65a7bd5c05
chore: merge main into release/v4.5
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-20 13:37:20 +02:00
Andras Bacsai
87dade4517
fix(secret-manager): add configurable request timeout for Infisical and Vault
2026-10-20 13:00:38 +02:00
Andras Bacsai
cf71fda5c1
feat(gitea): add Gitea App sources and private repo deployments ( #12234 )
2026-10-19 21:58:30 +02:00
Andras Bacsai
62be8674bc
feat(proxy): add optional permanent redirects for apps and services ( #12233 )
2026-10-19 21:46:12 +02:00
Andras Bacsai
59793b060c
fix(api): point rejected fqdn field to domains on application writes ( #12217 )
2026-10-19 21:07:51 +02:00
Andras Bacsai
dd456625ec
Merge remote-tracking branch 'origin/release/v4.5' into release/v4.5
2026-10-19 15:03:38 +02:00
Andras Bacsai
3d8cea9e3c
feat(rollback): list Docker registry images of recent deployments
...
Rollback now also lists the commit images of the last 10 successful
deployments when the application pushes to a Docker registry. The
deployment pulls such an image when the server no longer has it.
The page and the API share GetRollbackImages, and the API returns a
source field (local or registry).
2026-10-19 10:10:48 +02:00
22a8c09dd6
Next ( #12202 )
...
Co-authored-by: Aditya Tripathi <aditya@climactic.co >
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rosslh <ross@rosshill.ca >
Co-authored-by: Abdulfetah Suudi <suudiabdulfetah@gmail.com >
Co-authored-by: Dharmveer <51308779+dharmveer97@users.noreply.github.com >
Co-authored-by: Maxwell <136101+mxswd@users.noreply.github.com >
2026-10-19 10:07:23 +02:00
Andras Bacsai
32096d53f1
Merge remote-tracking branch 'origin/release/v4.5' into pr-12202-next
...
# Conflicts:
# .ai/lessons.md
# app/Actions/Server/CleanupDocker.php
# app/Http/Controllers/Api/DatabasesController.php
# app/Http/Controllers/Api/ServerCanvasController.php
# app/Http/Controllers/Api/ServicesController.php
# app/Http/Middleware/ApiIpAllowed.php
# app/Jobs/VolumeBackupJob.php
# app/Livewire/Concerns/RemembersCanvasView.php
# app/Livewire/Fleet/Metrics.php
# app/Livewire/Project/Database/BackupEdit.php
# app/Livewire/Project/Service/BackupExecutions.php
# app/Livewire/Project/Shared/EnvironmentVariable/All.php
# app/Livewire/Project/Shared/Storages/VolumeBackups.php
# app/Livewire/Security/ApiTokens.php
# app/Livewire/Tags/Show.php
# app/Models/ApplicationSetting.php
# app/Models/Service.php
# app/Rules/ValidGitRepositoryUrl.php
# app/Services/EnvironmentCanvas.php
# app/Services/ProjectCanvas.php
# app/Services/ServerCanvas.php
# app/Services/ServerTransfer/ServerTransferExporter.php
# app/Services/ServerTransfer/ServerTransferImporter.php
# app/Services/ServerTransfer/ServerTransferMigrator.php
# app/Services/SharedVariableCanvas.php
# app/Traits/ExecutesDatabaseStartCommands.php
# app/Traits/HasS3Replicas.php
# bootstrap/helpers/shared.php
# config/constants.php
# other/nightly/versions.json
# resources/css/app.css
# resources/js/canvas-core.js
# resources/js/canvas/deploy/DeployCanvas.svelte
# resources/js/canvas/deploy/state.svelte.js
# resources/js/canvas/deploy/styles.js
# resources/js/canvas/environment/Card.svelte
# resources/js/canvas/environment/EnvironmentCanvas.svelte
# resources/js/canvas/environment/Panel.svelte
# resources/js/canvas/environment/StatusDot.svelte
# resources/js/canvas/environment/Toolbar.svelte
# resources/js/canvas/environment/Zone.svelte
# resources/js/deploy-canvas.test.js
# resources/js/environment-canvas.js
# resources/js/environment-canvas.test.js
# resources/views/components/canvas-view-toggle.blade.php
# resources/views/components/navbar.blade.php
# resources/views/components/server/sidebar.blade.php
# resources/views/components/shared-variables/layout.blade.php
# resources/views/components/shared-variables/sidebar.blade.php
# resources/views/components/top-user-menu.blade.php
# resources/views/layouts/app.blade.php
# resources/views/livewire/fleet/metrics.blade.php
# resources/views/livewire/project/database/backup-edit/s3.blade.php
# resources/views/livewire/project/database/backup-executions.blade.php
# resources/views/livewire/project/environment-canvas.blade.php
# resources/views/livewire/project/new/select.blade.php
# resources/views/livewire/project/project-canvas.blade.php
# resources/views/livewire/project/projects-canvas.blade.php
# resources/views/livewire/project/shared/environment-variable/all.blade.php
# resources/views/livewire/project/shared/storages/volume-backups/s3.blade.php
# resources/views/livewire/security/api-tokens.blade.php
# resources/views/livewire/server/canvas.blade.php
# resources/views/livewire/server/index.blade.php
# resources/views/livewire/server/navbar.blade.php
# resources/views/livewire/server/partials/localhost-general.blade.php
# resources/views/livewire/server/show.blade.php
# resources/views/livewire/settings/advanced.blade.php
# resources/views/livewire/shared-variables/canvas.blade.php
# resources/views/livewire/tags/canvas.blade.php
# resources/views/livewire/tags/show.blade.php
# routes/web.php
# tests/Feature/ApiDisabledCalloutTest.php
# tests/Feature/BackupS3DestinationsFormTest.php
# tests/Feature/DatabaseStartContentFilesTest.php
# tests/Feature/DockerCleanupJobTest.php
# tests/Feature/EnvironmentCanvasTest.php
# tests/Feature/InstanceBackupMultipleS3DestinationsTest.php
# tests/Feature/Livewire/Fleet/MetricsChartPayloadTest.php
# tests/Feature/Livewire/Fleet/MetricsDataTest.php
# tests/Feature/Mcp/McpEndpointTest.php
# tests/Feature/Mcp/McpToggleApiTest.php
# tests/Feature/ProjectCanvasTest.php
# tests/Feature/ServerCanvasTest.php
# tests/Feature/SharedVariableCanvasTest.php
# tests/Feature/VolumeBackupTest.php
# tests/Unit/ScpStyleGitUrlTest.php
# tests/Unit/ServerTransfer/ServerTransferS3DestinationsTest.php
# tests/v4/Browser/DeployCanvasTest.php
# versions.json
2026-10-19 10:00:21 +02:00
Andras Bacsai and Claude Opus 5.5
a82d32c946
chore: merge main into release/v4.5
...
Resolve conflicts between main's security fixes and v4.5 features:
- Keep v4.5 features (log redaction, multi-S3 backups, transfer flow,
scheduled task modal, sidebar) and port main's fixes into them.
- Reuse RequiresDeployAbility for the Hostinger create endpoint.
- Align MCP tool abilities and descriptions with main's new deploy
requirements, and use deploy tokens in the affected MCP tests.
- Drop the duplicate DockerCleanupJobTest helper and tests, and the
exportBundle test for a method v4.5 removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 10:00:05 +02:00
Andras Bacsai
7fe40f4cf6
fix(api): require deploy ability for server side effects
...
Require deploy permission for API changes that trigger server side effects, including resource deletion, storage access, provider operations, and database imports. Also escape Docker cleanup filters and sanitize log drain server names.
2026-10-19 09:07:42 +02:00
Andras Bacsai
0fb816bcb5
fix(api): require deploy ability for Hostinger setup options
...
Require deploy permission when setting a post-install script or extra SSH keys, document the 403 response, and cover both denial and allowed deployment cases.
2026-10-19 00:02:52 +02:00
e3d4411ff2
chore: merge main into release/v4.5 ( #12192 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: Furox <177975472+Furox-Art@users.noreply.github.com >
Co-authored-by: johandenhollander <johan.den.hollander@finalist.nl >
Co-authored-by: João Cruz <161638790+SrJooJ@users.noreply.github.com >
Co-authored-by: Saim Hashmi <hashmisaim037@gmail.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-18 23:43:20 +02:00
Andras Bacsai
9355728d03
fix(log-drains): validate custom log drain configuration ( #12197 )
2026-10-18 23:40:54 +02:00
Andras Bacsai
a16994a88f
fix(api): require deploy permission for proxy and custom log drain changes ( #12198 )
2026-10-18 23:35:25 +02:00
Andras Bacsai
5227693885
fix(deployments): scope deployment queries to team applications ( #12195 )
2026-10-18 23:32:14 +02:00
Andras Bacsai
8ab10c66de
fix(api): require deploy ability to run scheduled tasks ( #12194 )
2026-10-18 23:27:05 +02:00
Maxwell and Andras Bacsai
0bc1288e81
Added docker awslogs driver to log drains ( #11972 )
...
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
2026-10-18 23:20:42 +02:00
09cfe2d211
fix(api): honour force_domain_override for docker_compose_domains on create ( #12032 )
...
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-18 23:07:46 +02:00
6731d83d9d
feat(notifications): add opt-in commit details to deployment emails ( #12030 )
...
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-18 23:00:27 +02:00
Andras Bacsai and Claude Opus 5.5
7c14c0098e
feat(server-transfer): run instance migration as a background job ( #12180 )
...
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-18 22:03:45 +02:00
Andras Bacsai
4553454f89
feat(webhooks): accept GitLab system hook events for deployments ( #12185 )
2026-10-18 12:49:16 +02:00
Andras Bacsai
6964714b5d
fix(api): persist service URLs set via API across compose re-parse
...
Call updateCompose() after saving an application's fqdn in the services
API urls handler so the domain is written back to the compose file.
Without this, StartService re-parsing the compose before deploy would
drop the domain and its SERVICE_URL_*/SERVICE_FQDN_* variables.
Add a feature test covering persistence after a second parse.
2026-10-16 23:05:31 +02:00
Andras Bacsai
412e0e5863
docs(watch-paths): state that patterns are one per line
...
Closes #11323
2026-10-16 21:28:57 +02:00
Andras Bacsai
492b174767
fix(github): route webhooks to the source of their app installation
...
Closes #11271
2026-10-16 21:28:40 +02:00
Andras Bacsai
4294856685
fix(api): apply redis_password and instant_deploy on database update
2026-10-15 23:05:19 +02:00
Andras Bacsai
25b554996b
fix(api): accept dockerfile when updating an application
...
Closes #12016
2026-10-15 23:05:19 +02:00
Andras Bacsai
04274a3c16
Merge remote-tracking branch 'origin/main'
2026-10-15 23:00:46 +02:00
johandenhollander and Claude Opus 5.5
1464b751b1
fix(webhooks): clean up closed GitLab MRs after target branch changes ( #12012 )
...
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:55:06 +02:00
johandenhollander and Claude Opus 5.5
e02f932a34
fix(webhooks): clean up closed Bitbucket PRs after destination branch changes ( #12008 )
...
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:55:00 +02:00
johandenhollander and Claude Opus 5.5
d0dff5b129
fix(webhooks): clean up closed Gitea PRs after base branch changes ( #12013 )
...
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:54:54 +02:00
Andras Bacsai
f9df974069
fix(api): accept connect_to_docker_network when creating services
...
Closes #12014
2026-10-15 22:52:05 +02:00
Andras Bacsai
7553608a3c
fix(api): accept github_app_uuid when updating an application
...
Closes #12016
2026-10-15 22:49:32 +02:00
Andras Bacsai
0c027881ef
fix(api): honour force_domain_override for docker_compose_domains on create
...
Closes #12031
2026-10-15 22:36:38 +02:00
Andras Bacsai and Claude Opus 5.5
7466da12a2
fix(git): accept ssh:// repository URLs with custom ports
...
The repository URL rule rejected ssh://user@host:port/path, so deploy-key
resources on servers with a custom SSH port needed a manual URL edit after
creation. Accept ssh:// URLs and keep them unchanged for deploy keys so the
port reaches the clone. Rename scpStyleGitUrlToHttps to sshGitUrlToHttps and
let it convert ssh:// URLs too, so public flows, repository links and GitHub
App repository slugs handle them.
Closes #12161
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:30:26 +02:00
Andras Bacsai
366736b460
fix(github): deploy same-repo PR previews regardless of author association
...
GitHub reports team-granted and private org members as CONTRIBUTOR or
NONE, so their same-repository PRs were silently skipped when public PR
deployments were off. A same-repository branch already requires push
access, so gate only on fork status, treat an unknown head repository as
a fork, and log skipped fork PRs.
Closes #9271
2026-10-15 22:09:35 +02:00
Andras Bacsai and Claude Opus 5.5
19430b461a
fix(github): check push watch paths against the net change of the push
...
Closes #10937
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 22:06:30 +02:00
Andras Bacsai
fa1895c99a
feat(dashboard): add canvas view with active deployment overlay
...
Add a /dashboard/canvas page that renders every team server with its
resources and their running or queued deployments, backed by a new
ServerCanvasController::dashboard endpoint and a per-server usage
endpoint for zone headers. The dashboard remembers the list/canvas
choice and each section (projects, servers) its own table/grid view.
- Show Deploying/Queued pills on canvas cards and a foldable recent
deployments panel; add shared CanvasControls component
- Allow backup downloads from the server host via the S3 download
storage (PrepareFileDownloadJob accepts a null container)
- Extract backup toggle/run actions into ManagesDatabaseBackup and
surface them in backup execution headers; merge S3 and retention
sections into the general backup settings
- Move deployments indicator to the top bar and add a main nav
resource menu with submenus; simplify breadcrumbs and settings
layouts
- Add shared variables overview canvas and scheduled task modals
- Add feature tests for dashboard canvas, view modes, navbar
submenus, backup S3 downloads and scheduled task modals
2026-10-14 23:55:28 +02:00
Aditya Tripathi and Andras Bacsai
fe0b038f3c
feat(files): add native file browser for applications, services and databases ( #11518 )
...
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
2026-10-14 14:32:44 +02:00
6b07f03107
feat(terminal): interactive console mode for containers (docker attach) ( #11538 )
...
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com >
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com >
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rosslh <ross@rosshill.ca >
2026-10-14 14:32:02 +02:00
github-actions[bot]
70f7744660
Merge remote-tracking branch 'origin/main' into release/v4.5
2026-10-14 12:29:51 +00:00
Andras Bacsai
23a22e7970
fix(sources): restrict system-wide Git sources to instance admins ( #12164 )
2026-10-14 14:07:54 +02:00
Andras Bacsai
521b3cb90f
feat(mcp): add REST-backed resource management tools ( #12163 )
2026-10-14 13:26:12 +02:00
Andras Bacsai
33ee09fa87
feat(canvas): add interactive resource views and team avatars ( #12160 )
2026-10-14 09:28:10 +02:00
Andras Bacsai
448dc8ea0a
feat(logging): strengthen secret redaction and add admin controls ( #12151 )
2026-10-13 20:43:19 +02:00