Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0daf663
Initial clean up
rmnbrd Sep 14, 2026
828c7b1
Add blueprint-specific settings
rmnbrd Sep 14, 2026
97631a5
Add preview step
rmnbrd Sep 15, 2026
9daaed3
Add flow to preview changes
rmnbrd Sep 15, 2026
465d9ad
Add optimistic behavior
rmnbrd Sep 16, 2026
409132f
Remove useless settings sections
rmnbrd Sep 16, 2026
e4b3c6d
Support helm-based blueprint services + small refactor
rmnbrd Sep 16, 2026
488ea3f
Align with latest backend changes
rmnbrd Sep 17, 2026
e7c14d8
Remove blueprint settings debug logging
rmnbrd Sep 17, 2026
dadef44
"Overrides" section is collapsed by default
rmnbrd Sep 17, 2026
49af9ea
UI improvements
rmnbrd Sep 17, 2026
5d4df6f
UI improvement
rmnbrd Sep 18, 2026
889dec2
Fix Blueprint update flow's close button behavior
rmnbrd Sep 18, 2026
aea7bcf
Track Blueprint settings usage analytics
rmnbrd Sep 18, 2026
5c07886
Redirect non-blueprint services from blueprint settings
rmnbrd Sep 18, 2026
4497dc1
Hide Terraform variables for blueprint services
rmnbrd Sep 18, 2026
a6c7351
Remove unused blueprint hook exports
rmnbrd Sep 18, 2026
4610d69
Fix Modal default width styling
rmnbrd Sep 18, 2026
d47110f
Validate optional blueprint fields before preview
rmnbrd Sep 18, 2026
a51d446
Standardize blueprint update flow step titles
rmnbrd Sep 18, 2026
cde176f
Use shared blueprint service predicate
rmnbrd Sep 18, 2026
4f04ab3
Hide blueprint version badge when unavailable
rmnbrd Sep 18, 2026
e29309d
Support Helm blueprint repository metadata
rmnbrd Sep 18, 2026
e3b87b9
Hide resources for Helm blueprint services
rmnbrd Sep 18, 2026
e545e68
Keep blueprint settings after deployment failure
rmnbrd Sep 18, 2026
6f256f9
Fix blueprint preview modal pending layout
rmnbrd Sep 18, 2026
4c43b0d
Export blueprint update utilities
rmnbrd Sep 18, 2026
c667076
Use blueprint predicate for service identity
rmnbrd Sep 18, 2026
fb96c29
Use default caching for blueprint variables
rmnbrd Sep 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions apps/console/src/routeTree.gen.ts

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { Navigate, createFileRoute } from '@tanstack/react-router'
import { useOrganization } from '@qovery/domains/organizations/feature'
import { BlueprintGeneralSettings } from '@qovery/domains/service-settings/feature'
import { isBlueprintService } from '@qovery/domains/services/data-access'
import { useService } from '@qovery/domains/services/feature'
import { useDocumentTitle } from '@qovery/shared/util-hooks'

export const Route = createFileRoute(
'/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/blueprint-configuration'
)({
component: RouteComponent,
})

function RouteComponent() {
const { organizationId, projectId, environmentId, serviceId } = Route.useParams()
const { data: organization } = useOrganization({ organizationId, suspense: true })
const { data: service } = useService({ environmentId, serviceId, suspense: true })
useDocumentTitle('Blueprint configuration - Service settings')

if (!service) {
return null
}

if (!isBlueprintService(service)) {
return (
<Navigate
to="/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/overview"
params={{ organizationId, projectId, environmentId, serviceId }}
replace
/>
)
}

if (!organization) {
return null
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
}

return <BlueprintGeneralSettings service={service} environmentId={environmentId} organizationId={organization.id} />
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ function RouteComponent() {
params: { organizationId, projectId, environmentId, serviceId },
})
}, [environmentId, navigate, organizationId, projectId, serviceId])
const navigateToBlueprintSettings = useCallback(() => {
navigate({
to: '/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/blueprint-configuration',
params: { organizationId, projectId, environmentId, serviceId },
})
}, [environmentId, navigate, organizationId, projectId, serviceId])

useEffect(() => {
if (service && !blueprintId) navigateToOverview()
Expand All @@ -37,7 +43,7 @@ function RouteComponent() {
currentStep={currentStep}
environmentId={environmentId}
service={service}
onExit={navigateToOverview}
onExit={navigateToBlueprintSettings}
>
<Outlet />
</BlueprintUpdateFlow>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Outlet, createFileRoute, useMatchRoute, useNavigate } from '@tanstack/r
import { useFeatureFlagEnabled } from 'posthog-js/react'
import { Suspense, useEffect } from 'react'
import { isAgenticWorkflow } from '@qovery/domains/services/data-access'
import { useService } from '@qovery/domains/services/feature'
import { hasTerraformVariablesTab, useService } from '@qovery/domains/services/feature'
import { Badge, Heading, Icon, LoaderSpinner, Navbar, Section } from '@qovery/shared/ui'

export const Route = createFileRoute(
Expand Down Expand Up @@ -82,7 +82,8 @@ function RouteComponent() {

if (shouldRedirect) return null

const serviceTabs = service?.serviceType === 'TERRAFORM' ? [...tabs, terraformTab] : tabs
const hasTerraformVariables = hasTerraformVariablesTab(service)
Comment thread
rmnbrd marked this conversation as resolved.
const serviceTabs = hasTerraformVariables ? [...tabs, terraformTab] : tabs
Comment thread
rmnbrd marked this conversation as resolved.
const activeTabId = serviceTabs.find((tab) => matchRoute({ to: tab.routeId }))?.id

return (
Expand All @@ -105,7 +106,7 @@ function RouteComponent() {
<TabLabel label={tab.label} isNew={tab.id === 'external-secrets'} />
</Navbar.Item>
))}
{service?.serviceType === 'TERRAFORM' && (
{hasTerraformVariables && (
<>
<div aria-hidden className="mx-4 h-5 border-l border-neutral" />
<Navbar.Item id={terraformTab.id} to={terraformTab.routeId}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
TerraformVariablesTable,
useTerraformVariablesContext,
} from '@qovery/domains/service-terraform/feature'
import { type Terraform } from '@qovery/domains/services/data-access'
import { type Terraform, isBlueprintService } from '@qovery/domains/services/data-access'
import { type TerraformGeneralData, useEditService, useService } from '@qovery/domains/services/feature'
import { Button, LoaderSpinner } from '@qovery/shared/ui'
import { useDocumentTitle } from '@qovery/shared/util-hooks'
Expand Down Expand Up @@ -87,7 +87,7 @@ function RouteComponent() {
const { data: service } = useService({ environmentId, serviceId, suspense: true })
useDocumentTitle('Terraform variables - Service')

if (service?.serviceType !== 'TERRAFORM') {
if (!service || isBlueprintService(service) || service.serviceType !== 'TERRAFORM') {
return null
}

Expand Down
1 change: 1 addition & 0 deletions libs/domains/service-settings/feature/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export * from './lib/service-general-settings/service-general-settings'
export * from './lib/service-general-settings/blueprint-general-settings/blueprint-general-settings'
export * from './lib/service-resources-settings/service-resources-settings'
export * from './lib/service-settings-layout/service-settings-layout'
export * from './lib/service-danger-zone-settings/service-danger-zone-settings'
Expand Down
Loading
Loading