feat(ui): Shadow UI redesign, domain management, and DNS autoconfigure (#11119)

Co-authored-by: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
This commit is contained in:
Andras BacsaiandShadowArcanist authored and GitHub committed 2026-08-03 23:11:54 +02:00
1 parent 0b843bb07c
commit 8ae56587d5
497 files changed
+44045 -22630

No files matched your search

+26
View File
@@ -112,6 +112,28 @@ Route::middleware(['throttle:login'])->group(function () {
Route::get('/auth/{provider}/redirect', [OauthController::class, 'redirect'])->name('auth.redirect');
Route::get('/auth/{provider}/callback', [OauthController::class, 'callback'])->name('auth.callback');
// Local-only previews for redesigned HTTP error pages (never registered in production).
if (app()->environment('local')) {
Route::get('/__error/{code}', function (string $code) {
$allowed = ['400', '401', '402', '403', '404', '419', '429', '500', '503'];
abort_unless(in_array($code, $allowed, true), 404);
$messages = [
'400' => 'The request could not be understood by the server due to malformed syntax.',
'401' => 'You don\'t have permission to access this page.',
'402' => 'A valid subscription or payment is required to continue.',
'403' => 'You don\'t have permission to access this page.',
'404' => 'Sorry, we couldn\'t find the page you\'re looking for.',
'419' => 'Your session has expired. Please log in again to continue.',
'429' => 'You\'re making too many requests. Please wait a few seconds before trying again.',
'500' => 'Example server error: connection to the database timed out.',
'503' => 'Service unavailable. Be right back. Thanks for your patience.',
];
abort((int) $code, $messages[$code]);
})->where('code', '[0-9]{3}')->name('dev.error-preview');
}
Route::middleware(['auth', 'verified'])->group(function () {
Route::middleware(['throttle:force-password-reset'])->group(function () {
Route::get('/force-password-reset', ForcePasswordReset::class)->name('auth.force-password-reset');
@@ -152,6 +174,7 @@ Route::middleware(['auth', 'verified'])->group(function () {
Route::prefix('storages')->group(function () {
Route::get('/', StorageIndex::class)->name('storage.index');
Route::get('/{storage_uuid}', StorageShow::class)->name('storage.show');
Route::get('/{storage_uuid}/danger', StorageShow::class)->name('storage.danger');
Route::get('/{storage_uuid}/resources', StorageShow::class)->name('storage.resources');
});
Route::prefix('shared-variables')->group(function () {
@@ -223,6 +246,7 @@ Route::middleware(['auth', 'verified'])->group(function () {
});
Route::prefix('project/{project_uuid}/environment/{environment_uuid}/application/{application_uuid}')->group(function () {
Route::get('/', ApplicationConfiguration::class)->name('project.application.configuration');
Route::get('/domains', ApplicationConfiguration::class)->name('project.application.domains');
Route::get('/swarm', ApplicationConfiguration::class)->name('project.application.swarm');
Route::get('/advanced', ApplicationConfiguration::class)->name('project.application.advanced');
Route::get('/environment-variables', ApplicationConfiguration::class)->name('project.application.environment-variables');
@@ -277,6 +301,7 @@ Route::middleware(['auth', 'verified'])->group(function () {
});
Route::prefix('project/{project_uuid}/environment/{environment_uuid}/service/{service_uuid}')->group(function () {
Route::get('/', ServiceConfiguration::class)->name('project.service.configuration');
Route::get('/domains', ServiceConfiguration::class)->name('project.service.domains');
Route::get('/logs', Logs::class)->name('project.service.logs');
Route::get('/environment-variables', ServiceConfiguration::class)->name('project.service.environment-variables');
Route::get('/storages', ServiceConfiguration::class)->name('project.service.storages');
@@ -352,6 +377,7 @@ Route::middleware(['auth'])->group(function () {
]);
})->name('source.all');
Route::get('/source/github/{github_app_uuid}', GitHubChange::class)->name('source.github.show');
Route::get('/source/github/{github_app_uuid}/danger', GitHubChange::class)->name('source.github.danger');
Route::get('/source/github/{github_app_uuid}/permissions', GitHubChange::class)->name('source.github.permissions');
Route::get('/source/github/{github_app_uuid}/resources', GitHubChange::class)->name('source.github.resources');
Route::get('/source/gitlab/{gitlab_app_uuid}', GitLabChange::class)->name('source.gitlab.show');