Skip to content

fix(clusters): improve BYOC setup and profile design - #3155

Merged
rmnbrd merged 10 commits into
stagingfrom
fix/byoc-v2-design-improvements
Oct 29, 2026
Merged

rmnbrd merged 10 commits into
stagingfrom
fix/byoc-v2-design-improvements

Conversation

@TheoGrandin74

@TheoGrandin74 TheoGrandin74 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Improve BYOC cluster setup and profile settings: keep credential and region dropdowns scrollable within short viewports, layer nested modal overlays correctly, and align operator configuration fields and taint lists with the existing UI patterns.

  • Center profile inputs, overlap active tab indicators with separators, and make Save and deploy the primary action.
  • Add a compact InputSearch size that scales the icon and spacing, and use it in the profile sidebar.
  • Simplify the operator status popover and hide the update action when the operator is up to date.

Operator configuration: scope and rationale

The new OperatorConfigurationField is dedicated to the Configure Qovery Operator step during BYOC setup. This modal needs full-width inputs with descriptions underneath and a taint list styled like organization settings, while the Profile page uses rows with labels on the left and inputs on the right. Keeping the modal presentation separate avoids adding operator-specific layout options and taint labels to the shared ProfileConfigurationField.

The component supports only scalar fields and the node-group taint object array. It handles the taint empty state, summary rows, add/edit/remove actions, item limits, and validation errors. It reuses SchemaFieldInput, ProfileArrayItemModal, and existing schema utilities rather than introducing another input or modal implementation. It updates local form values; the surrounding creation flow remains responsible for API operations. General nested-object and arbitrary-array editing are outside its scope.

Screenshots

BYOC setup: consistent field spacing and a capped region dropdown that extends beyond the modal without being clipped.

BYOC setup and region dropdown

Operator configuration: full-width inputs, descriptions beneath each field, and the dedicated taint empty state.

Operator configuration and taint empty state

Profile settings: compact sidebar search, vertically centered inputs, tab underlines aligned with the divider, and a primary “Save and deploy” action.

Profile settings and save actions

Operator status: concise status and version details, with target versions retained below installed versions.

Operator status popover

Validation

Focused cluster and shared UI tests passed during implementation. Added regression coverage for taint editing and operator status, plus Storybook examples for compact search, modal dropdowns, and stacked modals. Git diff whitespace check passed.

Tests and browser checks were not rerun for the final styling changes, as requested.


Summary by cubic

Improves BYOC cluster setup and profile settings: credential and region dropdowns stay scrollable inside short viewports, stacked modals dim correctly, and operator status and setup configuration match existing UI patterns.

  • Credential and region dropdowns now render portaled with a capped menu height so they stay scrollable inside modals, and the creation modal uses the existing fake-modal mode to avoid a document-level scroll lock.
  • Modal overlays share their layer with the content so a child dialog dims the parent.
  • Operator status drops the descriptive text, shows installed versions with concise labels like "Up-to-date", and hides the update action when up to date.
  • Operator setup now shows only basic fields and node-group taints; taints render as a card-based list with summaries, an empty state, and add/edit/remove modals. Read-only fields display the API-resolved value, and violations on unsupported fields surface as alert banners.
  • Search icons no longer intercept pointer events, and the compact InputSearch size preserves default markup for existing callers.
  • Profile inputs are center-aligned, Save and deploy is the primary action, and tab indicators no longer overlap separators.
  • Adds Storybook examples, regression tests, and contributor workflow guidance in AGENTS.md.

Written for commit 86cd67a. Summary will update on new commits.

View guided diff Turn on auto-fix

@RemiBonnet

Copy link
Copy Markdown
Member

Qovery Preview

Qovery can create a Preview Environment for this PR.
To trigger its creation, please post a comment with one of the following command.

Command Blueprint environment
/qovery preview cc1de7de-94e5-40f8-8e45-bc8986d9dfec storybook
/qovery preview 964984c5-fba6-4371-88d3-a5daf99642ab test-prod
/qovery preview 28c47145-c8e7-4b9d-8d9e-c65c95b48425 staging
/qovery preview {all|UUID1,UUID2,...} To preview multiple environments

This comment has been generated from Qovery AI 🤖.
Below, a word from its wisdom :

One day they will all understand

@cubic-dev-ai cubic-dev-ai Bot 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.

1 issue found across 18 files

Confidence score: 4/5

  • In profile-configuration-field.tsx, voice-control users may not be able to activate the add button by saying its visible label because the aria-label uses different text. Make the accessible name include the visible label.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="libs/domains/clusters/feature/src/lib/cluster-profile/profile-configuration-field.tsx">

<violation number="1" location="libs/domains/clusters/feature/src/lib/cluster-profile/profile-configuration-field.tsx:230">
P3: The `aria-label` on the add button (`Add item to ${field.label}`) no longer contains the visible text (`arrayLabels.add`, e.g. 'Add taint'). Voice-control users who say the visible label will not match the control. Drop the `aria-label` so the accessible name comes from the visible text, or include the visible label in it.</violation>
</file>

Tip: Get a Slack DM when cubic finishes reviewing your PRs. Connect Slack

View guided diff | Turn on auto-fix | Re-trigger cubic

@nx-cloud

nx-cloud Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 86cd67a

Command Status Duration Result
nx run console:build --parallel=3 --configurati... ✅ Succeeded 1m 14s View ↗
nx affected --target=test --parallel=3 --config... ✅ Succeeded 3m 56s View ↗
nx affected --target=lint --parallel=3 ✅ Succeeded 2m 40s View ↗
nx-cloud record -- yarn nx format:check ✅ Succeeded 3s View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-10-27 19:32:20 UTC

@cubic-dev-ai cubic-dev-ai Bot 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.

All reported issues were addressed across 11 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

View guided diff | Turn on auto-fix | Re-trigger cubic

@codecov

codecov Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 67.81609% with 28 lines in your changes missing coverage. Please review.
✅ Project coverage is 54.43%. Comparing base (1a5d56a) to head (86cd67a).

Files with missing lines Patch % Lines
...-cluster-creation/operator-configuration-field.tsx 75.00% 2 Missing and 12 partials ⚠️
...nents/inputs/input-search/input-search.stories.tsx 0.00% 6 Missing ⚠️
...ib/components/inputs/input-search/input-search.tsx 40.00% 0 Missing and 3 partials ⚠️
...nents/inputs/input-select/input-select.stories.tsx 0.00% 3 Missing ⚠️
...ared/ui/src/lib/components/modal/modal.stories.tsx 0.00% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           staging    #3155      +/-   ##
===========================================
+ Coverage    54.42%   54.43%   +0.01%     
===========================================
  Files         1424     1329      -95     
  Lines        31999    30057    -1942     
  Branches      9537     9278     -259     
===========================================
- Hits         17415    16363    -1052     
+ Misses       11844    11110     -734     
+ Partials      2740     2584     -156     
Flag Coverage Δ
unittests 54.43% <67.81%> (+0.01%) ⬆️

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.

@cubic-dev-ai cubic-dev-ai Bot 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.

1 issue found across 2 files (changes from recent commits).

Confidence score: 5/5

  • In libs/domains/clusters/feature/src/lib/cluster-add/cluster-add.spec.tsx, the comment says the assertion covers a select, but the mocked flow renders no dropdowns; it only checks whether the fakeModal wrapper locks scroll. Update the comment to describe what the test actually verifies.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="libs/domains/clusters/feature/src/lib/cluster-add/cluster-add.spec.tsx">

<violation number="1" location="libs/domains/clusters/feature/src/lib/cluster-add/cluster-add.spec.tsx:102">
P3: The comment is inaccurate: this assertion never renders a select. The mocked creation flow has no dropdowns, so it only checks that the `fakeModal` wrapper in `ClusterAdd` doesn't lock scroll. Reword the comment to say that, or add a test that renders the real flow's selects and checks the lock there.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

@cubic-dev-ai cubic-dev-ai Bot 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.

All reported issues were addressed across 5 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

@rmnbrd rmnbrd 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.

Well done! Thanks for this 🙏

@rmnbrd
rmnbrd merged commit 282ec29 into staging Oct 29, 2026
11 checks passed
@rmnbrd
rmnbrd deleted the fix/byoc-v2-design-improvements branch October 29, 2026 12:19
@RemiBonnet

Copy link
Copy Markdown
Member

🎉 This PR is included in version 1.379.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants