Commit graph

15568 commits

Author SHA1 Message Date
Andras Bacsai
7f135e0f6d Harden token permission handling 2026-05-22 13:12:17 +02:00
Andras Bacsai
095a1f0db0
Fix source selection flow (#10354) 2026-05-22 13:02:11 +02:00
Andras Bacsai
e9b8320d5f Fix source selection flow 2026-05-22 13:00:53 +02:00
Andras Bacsai
783344c875
fix(environment): scope DeleteEnvironment lookups to current team (#10349) 2026-05-22 12:57:57 +02:00
Andras Bacsai
7ea1bac4ef
fix(destination): scope server and network selection to current team (#10352) 2026-05-22 12:55:56 +02:00
Andras Bacsai
59111e8cf3 fix(destination): scope server and network selection to current team
Resolve the server and network in Destination::addServer() and
::promote() through ownedByCurrentTeam() before use, authorize the
update against the resource, and pass the validated IDs into
attach()/detach()/update(). Errors are routed through handleError()
to match the sibling removeServer() method.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:53:14 +02:00
Andras Bacsai
36526928df feat(sentinel): deduplicate metrics push processing
Move Sentinel push handling into a controller and dispatch server update jobs only when container state changes or the force interval elapses. Add opt-in PostgreSQL read/write replica configuration and tune periodic proxy network and storage checks to reduce unnecessary work.

Add feature coverage for replica config, Sentinel push deduplication, deployment log scrolling, and server update job optimizations.
2026-05-22 12:48:48 +02:00
Andras Bacsai
5e0e6772d5 fix(deployments): load realtime assets without Vite
Remove unused Vue, Echo, Pusher, and ioredis npm dependencies from the frontend build. Update realtime scripts and deployment log markup to work without bundling those assets through Vite.
2026-05-22 12:48:48 +02:00
Andras Bacsai
df166ac689 fix(environment): scope DeleteEnvironment lookups to current team
Scope DeleteEnvironment::mount() and delete() lookups through
Environment::ownedByCurrentTeam() so an environment_id that belongs to
another team resolves to a 404 instead of loading the foreign record.
Mark $environment_id as #[Locked] so the public Livewire property can no
longer be reassigned from the client.

Add tests/Feature/DeleteEnvironmentTeamScopingTest.php covering mount,
delete, the #[Locked] guard, and the team-scoped helper for both the
cross-team and own-team cases.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:37:48 +02:00
Andras Bacsai
d55e3de3bc
fix(source): scope private key and source selection to current team (#10348) 2026-05-22 12:31:03 +02:00
Andras Bacsai
5dda39e588 fix(source): scope private key and source selection to current team
The Source component now resolves the supplied private key and Git
source IDs through team-scoped queries before persisting them, so a
selection can only ever reference a resource owned by the current
team. The source type is additionally restricted to the supported
GitHub/GitLab app classes.

The privateKeyId property is marked #[Locked] so it can only change
through the dedicated handler rather than a direct property update.

Adds feature tests covering team-scoped selection of private keys and
Git sources.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:30:00 +02:00
Andras Bacsai
b124397613 fix(schedule): prevent duplicate SSL certificate regeneration
Run RegenerateSslCertJob on one server only and add coverage to ensure scheduled production jobs use onOneServer.
2026-05-21 19:19:43 +02:00
Andras Bacsai
0c7fcffa01 version update 2026-05-21 13:08:15 +02:00
Andras Bacsai
de87624a72 chore(deps): update composer lock dependencies 2026-05-21 13:07:27 +02:00
Andras Bacsai
077c68e4c4 docs(readme): remove Context.dev sponsor 2026-05-20 16:44:18 +02:00
Andras Bacsai
65c0c92c02 fix(destinations): handle empty and server-scoped destinations
Build the global destinations list from actual destination records so empty
servers do not render duplicate empty states. Allow creating Docker destinations
for a selected team server outside the global usable list, authorize swarm
creation correctly, and store discovered swarm network names from the selected
network. Add feature coverage for empty states, selected-server mounting, and
swarm destination creation.
2026-05-19 12:50:08 +02:00
Andras Bacsai
a67cc1d3a9 docs(readme): fix PrivateAlps sponsor wording 2026-05-18 10:17:33 +02:00
Andras Bacsai
270e34fa71 chore(versions): bump helper and realtime images 2026-05-18 08:44:50 +02:00
Andras Bacsai
6ceb444cf4 fix(docker): remove default nginx configs
Delete the packaged nginx config files after installing nginx so the
image uses the application-provided configuration.
2026-05-16 20:09:25 +02:00
Andras Bacsai
0917bb7b8e fix(docker): install patched nginx from official repository
Pin nginx to the official nginx.org Alpine mainline package in development and production images so patched releases can be installed consistently.
2026-05-16 19:06:39 +02:00
Andras Bacsai
bba0cd76d2 docs(readme): remove CubePath sponsor entry 2026-05-15 13:41:54 +02:00
Andras Bacsai
fde500a347 fix(templates): require Docmost mail driver
Require MAIL_DRIVER to be set before Docmost starts and add a unit test to keep the compose template and generated service templates in sync.
2026-05-15 13:36:02 +02:00
Andras Bacsai
52e60f1dcc Merge remote-tracking branch 'origin/next' into next 2026-05-13 10:56:44 +02:00
Andras Bacsai
7056a1cae1 chore(helper): bump railpack and mise versions 2026-05-13 10:50:50 +02:00
Andras Bacsai
4ff3e4b2be
feat(deployments): track application configuration diffs (#10183) 2026-05-13 10:49:53 +02:00
Andras Bacsai
76c8defef3
fix(api-tokens): persist expiration warning state (#10184) 2026-05-13 10:43:50 +02:00
Andras Bacsai
1522c510cf fix(api-tokens): mark expiration warning after notification
Ensure failed token expiration warning notifications do not persist the warning marker, allowing the job to retry later.
2026-05-13 10:28:32 +02:00
Andras Bacsai
df4d9f8069 fix(applications): use preview environment variable query
Call the preview environment variable relationship as a query when building the legacy configuration hash, and cover preview deployments with a regression test.
2026-05-13 10:28:18 +02:00
Andras Bacsai
3911a0305c fix(api-tokens): persist expiration warning state
Track when expiration warnings are sent on personal access tokens so repeated job runs or cache flushes do not send duplicate notifications.
2026-05-13 10:11:40 +02:00
Andras Bacsai
0ecd488d6a fix(applications): refresh pending configuration changes
Dispatch configuration change events after saving application source and advanced settings, and refresh the configuration checker before showing redeploy diffs.
2026-05-13 10:04:17 +02:00
Andras Bacsai
f8849aba73 feat(deployments): track application configuration diffs
Store deployment configuration snapshots on application deployment queues and compare them against the current application state. Surface grouped pending changes in the configuration checker and use build-impact diffs to decide when an existing image can skip the build step.
2026-05-13 09:58:58 +02:00
Andras Bacsai
f098895abf style(navbar): refine collapsed sidebar spacing
Adjust sidebar icon sizing, collapsed menu dimensions, and main layout padding for improved alignment. Also tidy related view spacing and formatting.
2026-05-12 11:07:19 +02:00
Andras Bacsai
9590f144bd
feat(applications): add configurable stop grace period (#9746) 2026-05-11 23:54:39 +02:00
Andras Bacsai
26cdd6e198 style(teams): update switch team button styling 2026-05-11 23:51:20 +02:00
Andras Bacsai
63c2d31ca0 feat(applications): add configurable stop grace period
Add centralized stop grace period resolution for application settings and use it across manual stops, preview stops, and deployments. Validate the Livewire advanced setting against shared min/max constants and cover persistence, fillable creation, and fallback behavior with tests.
2026-05-11 23:43:53 +02:00
Andras Bacsai
d1220895d9 Merge remote-tracking branch 'origin/next' into feat/configurable-stop-grace-period 2026-05-11 23:20:31 +02:00
Andras Bacsai
6f3bb47682
fix(applications): decode custom nginx API payloads (#10067) 2026-05-11 22:24:55 +02:00
Andras Bacsai
a42613168d fix(applications): store custom nginx config from API correctly
Decode base64 custom_nginx_configuration before model assignment so it is not double-encoded, and allow null values when clearing the setting. Add API coverage for create, update, invalid input, and clearing behavior.
2026-05-11 22:22:01 +02:00
Andras Bacsai
93fb7827ab
fix(deployment): include commit in preview image tags (#10066) 2026-05-11 22:13:16 +02:00
Andras Bacsai
9bb40f3ccb fix(deployment): avoid shared preview tags for HEAD commits
Use the deployment UUID when preview deployments are built from HEAD so each deployment gets distinct production and build image tags.
2026-05-11 22:11:08 +02:00
Andras Bacsai
2253c40e01 fix(deployment): include commit in preview image tags
Generate pull request preview image tags with both the PR id and commit
so different commits on the same PR do not reuse the same image tag. Sanitize
and truncate generated tags to stay within Docker tag limits.
2026-05-11 22:05:07 +02:00
Andras Bacsai
27b44fce4d
feat(service): gitea runner (#9961) 2026-05-11 21:47:19 +02:00
Andras Bacsai
2852f324f6
chore(service): disable litequeen (#10006) 2026-05-11 21:47:00 +02:00
Andras Bacsai
f13612b9c7
fix(realtime): remove axios dependency (#10065) 2026-05-11 21:44:41 +02:00
Andras Bacsai
c8185c8336 fix(realtime): replace axios with native HTTP client
Remove axios from the realtime server dependencies to avoid header injection risk,
switch Docker builds to npm ci, and bump the realtime image version to 1.0.15.
2026-05-11 21:43:52 +02:00
Andras Bacsai
9a280d1143
build(deps): bump phpseclib/phpseclib from 3.0.51 to 3.0.52 (#9952) 2026-05-11 21:31:32 +02:00
Andras Bacsai
88a86287cb
feat(buildpack): add railpack as a build pack option (#9117) 2026-05-11 17:34:42 +02:00
Andras Bacsai
94c7968c4f style(railpack): add return type to deploy method 2026-05-11 17:33:12 +02:00
Andras Bacsai
ab1958d741 fix(railpack): fail fast when buildx is unavailable
Require Docker buildx before Railpack builds, normalize environment
variable keys before validation, and align private deploy key API docs with
the supported dockerfile build pack.
2026-05-11 17:31:29 +02:00
Andras Bacsai
0395db30f0 fix(railpack): align example ports and smoke checks
Update Railpack seed examples to use the expected Flask start command and Go/Rust exposed ports. Adjust smoke coverage to run Symfony by default and accept reachable 4xx responses, and extend seeder tests for per-example branch and port assertions.
2026-05-11 17:13:55 +02:00