Skip to content

feat(blueprints): blueprint update flow#2799

Merged
rmnbrd merged 35 commits into
stagingfrom
feature/blueprints/update-flow
Jul 13, 2026
Merged

feat(blueprints): blueprint update flow#2799
rmnbrd merged 35 commits into
stagingfrom
feature/blueprints/update-flow

Conversation

@rmnbrd

@rmnbrd rmnbrd commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Blueprint update flow

This PR introduces the update flow for Blueprints, allowing users to easily update the outdated blueprint of a blueprint-based service.

Screenshots / Recordings

https://www.loom.com/share/7d20972b85b6456a82a9af8b370e75f3

Testing

  • Changes tested locally in the relevant Console's pages and Storybooks
  • yarn test or yarn test -u (if you need to regenerate snapshots)
  • yarn format
  • yarn lint

PR Checklist

  • I followed naming, styling, and TypeScript rules (see .cursor/rules)
  • I performed a self-review (diff inspected, dead code removed)
  • I titled the PR using Conventional Commits with a scope when possible (e.g. feat(service): add new Terraform service) - required for semantic-release
  • I only kept necessary comments, written in English (watch for useless AI comments)
  • I involved a designer to validate UI changes if I am not a designer
  • I covered new business logic with tests (unit)
  • I confirmed CI is green (Codecov red can be accepted)
  • I reviewed and executed locally any AI-assisted code

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.33333% with 149 lines in your changes missing coverage. Please review.
✅ Project coverage is 46.89%. Comparing base (c347652) to head (0f4476d).
⚠️ Report is 15 commits behind head on staging.

Files with missing lines Patch % Lines
...ce-update-flow/blueprint/blueprint-update-flow.tsx 0.00% 56 Missing ⚠️
...te-flow/blueprint/blueprint-update-review-step.tsx 0.00% 52 Missing ⚠️
...ce-update-flow/blueprint/blueprint-update-utils.ts 64.58% 12 Missing and 5 partials ⚠️
...hooks/use-update-blueprint/use-update-blueprint.ts 0.00% 6 Missing ⚠️
...service-overview/service-header/service-header.tsx 78.94% 1 Missing and 3 partials ⚠️
...update-flow/blueprint/blueprint-update-context.tsx 20.00% 4 Missing ⚠️
...view-socket/use-blueprint-update-preview-socket.ts 88.88% 3 Missing ⚠️
...e-flow/blueprint/blueprint-update-preview-step.tsx 89.28% 2 Missing and 1 partial ⚠️
...ws-subscription/use-react-query-ws-subscription.ts 66.66% 1 Missing and 1 partial ⚠️
...riable-input/blueprint-manifest-variable-input.tsx 75.00% 0 Missing and 1 partial ⚠️
... and 1 more
Additional details and impacted files
@@             Coverage Diff             @@
##           staging    #2799      +/-   ##
===========================================
- Coverage    46.92%   46.89%   -0.03%     
===========================================
  Files         1251     1262      +11     
  Lines        26771    27029     +258     
  Branches      7804     7879      +75     
===========================================
+ Hits         12562    12676     +114     
- Misses       12052    12189     +137     
- Partials      2157     2164       +7     
Flag Coverage Δ
unittests 46.89% <50.33%> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rmnbrd rmnbrd changed the title feat(blueprints): add basis for blueprint update flow feat(blueprints): blueprint update flow Jul 8, 2026
@rmnbrd rmnbrd marked this pull request as ready for review July 9, 2026 09:48
Copilot AI review requested due to automatic review settings July 9, 2026 09:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds an end-to-end “Blueprint update” flow for blueprint-based services, including a new route and UI that guides users through reviewing required/optional/modified/removed values, previewing the impact/output, and triggering the update.

Changes:

  • Introduces a new Blueprint Update funnel flow UI with preview output streaming via WebSocket.
  • Adds client-side data-access mutations/hooks for previewing and launching blueprint updates, plus route + header entrypoint.
  • Refactors shared blueprint field utilities and updates boolean blueprint inputs to use the shared InputToggle component (with autoFocus support).

Reviewed changes

Copilot reviewed 27 out of 28 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
yarn.lock Bumps qovery-typescript-axios lockfile entry to support new blueprint update endpoints/types.
package.json Updates qovery-typescript-axios dependency version.
libs/state/util-queries/src/lib/use-react-query-ws-subscription/use-react-query-ws-subscription.ts Makes WS message parsing resilient to non-JSON payloads.
libs/state/util-queries/src/lib/use-react-query-ws-subscription/use-react-query-ws-subscription.spec.tsx Adds coverage for plain-text WS messages.
libs/shared/ui/src/lib/components/inputs/input-toggle/input-toggle.tsx Adds autoFocus prop passthrough for toggle inputs.
libs/domains/services/feature/src/lib/service-update-flow/blueprint/blueprint-update-flow.tsx New blueprint update flow UI (review + preview + confirm) and payload-building helpers.
libs/domains/services/feature/src/lib/service-overview/service-header/service-header.tsx Makes “Update available” badge clickable to open the new update route.
libs/domains/services/feature/src/lib/service-overview/service-header/service-header.spec.tsx Updates tests to assert navigation to the blueprint update flow.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-step-summary/blueprint-step-summary.tsx Switches blueprint field helpers import to new shared util module.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-manifest-context/blueprint-manifest-context.tsx Uses extracted blueprint field utilities for defaults/field classification.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-creation-utils/blueprint-creation-utils.ts Removes duplicated field helper logic in favor of shared blueprint field utils.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-creation-utils/blueprint-creation-utils.spec.ts Updates tests to import field helpers from the new shared module.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-creation-flow.spec.tsx Updates focus assertion for toggle inputs to use role="switch".
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-create-context/blueprint-create-context.ts Uses new shared BlueprintFieldValues type location.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-configuration-view/blueprint-configuration-view.tsx Uses shared blueprint field utils and shared variable input component.
libs/domains/services/feature/src/lib/service-creation-flow/blueprint/blueprint-configuration-view/blueprint-creation-components/checkbox-field/checkbox-field.tsx Removes legacy checkbox field component (replaced by toggle-based input).
libs/domains/services/feature/src/lib/hooks/use-update-blueprint/use-update-blueprint.ts New mutation hook to trigger blueprint updates and invalidate relevant queries.
libs/domains/services/feature/src/lib/hooks/use-preview-blueprint-update/use-preview-blueprint-update.ts New mutation hook to request a blueprint update preview.
libs/domains/services/feature/src/lib/hooks/use-blueprint-update-preview-socket/use-blueprint-update-preview-socket.ts New hook to stream preview impact/raw output from WS messages.
libs/domains/services/feature/src/lib/hooks/use-blueprint-update-preview-socket/use-blueprint-update-preview-socket.spec.tsx Adds unit tests for preview socket parsing and state behavior.
libs/domains/services/feature/src/lib/blueprint-manifest-variable-input/blueprint-manifest-variable-input.tsx Updates blueprint variable input rendering and adds optional label override support.
libs/domains/services/feature/src/lib/blueprint-field-utils/blueprint-field-utils.ts New shared module for blueprint field types, defaults, formatting, and validation utilities.
libs/domains/services/feature/src/index.ts Exposes new hooks and blueprint update flow entrypoint from the feature package.
libs/domains/services/data-access/src/lib/domains-services-data-access.ts Adds previewBlueprintUpdate and updateBlueprint mutations using the axios client.
apps/console/src/routeTree.gen.ts Registers the new /update/blueprint route in the generated route tree.
apps/console/src/routes/_authenticated/organization/route.tsx Adds blueprint update route to bypass-layout route list.
apps/console/src/routes/_authenticated/organization/$organizationId/route.tsx Hides progress card for the blueprint update route.
apps/console/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/update/blueprint.tsx New route component that loads service/env context and mounts the update flow.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@RemiBonnet RemiBonnet left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rmnbrd!

The preview output generation can take a while. We should probably explain why and set expectations for customers, could you add a UI indicator for this?

@rmnbrd

rmnbrd commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

The preview output generation can take a while. We should probably explain why and set expectations for customers, could you add a UI indicator for this?

Yeah, that's a good point.
At first, we intended to implement a much more complex loader, with more meaningful loading steps:
image

Unfortunately, the WebSocket events have not been implemented yet, preventing us from implementing this version of the loader.

That being said, since this loading state takes a while to come to completion, I've decided to update the text in order for it to feel a bit more "alive":

Screen.Recording.2026-07-13.at.15.40.00.mov

Let me know what you think

@rmnbrd rmnbrd merged commit d554e0d into staging Jul 13, 2026
12 checks passed
@rmnbrd rmnbrd deleted the feature/blueprints/update-flow branch July 13, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants