fix(clusters): address remaining Cubic and Copilot review feedback on engine v2
Merged
RM
10d ago+186+186+012345678901234567890123456789-51-51-01234567890123456789
Summary
Follow-up to #2997. I triaged the 22 still-unresolved Cubic and Copilot threads against the current branch. This PR fixes the ones that are still valid, one commit per change.
Fixed
- Profile selection: no longer falls back to a disabled layer when none can be opened, and an empty state is shown instead (Cubic + Copilot).
- Search: a component with nothing to configure that matches the search no longer opens an empty form; the layer's openable state is recomputed after filtering (Cubic).
- Operator polling: stopping on a missing Operator state is now opt-in (
stopPollingWhenMissing). It was also stopping the poll in the self-managed install step, which waits for the Operator to appear (Cubic). - Save: edits reverted by hand are no longer sent in the PUT, so those fields keep following the schema default (Copilot).
- Sensitive number inputs are masked in both layouts (Cubic).
- Provider cards: the icon is hidden from assistive technologies, so the accessible name is no longer "AWS AWS" (Copilot).
- Operator status panel moves from a tooltip to a popover, so the
Update Operatoraction is reachable by keyboard (Cubic x2). It now opens on click rather than hover. - Tests: asserted the analytics event on the EKS Anywhere request, and dropped a no-op focus/Enter simulation on a disabled button (Cubic).
Not changed
- Object-array items with nested fields,
isItemModalOpenRef, the post-save reset of edits made while saving, and the add-modal initial validation are already handled on the branch (guarded Add button,onMountedChange,omitSubmittedValues, existing test). omitEmptyValuesdropping'': left as is. Clearing a defaulted field falling back to the schema default on save is the intended behaviour, and sending''risks violatingminLength/required.- Default-valued cluster inputs shown as changed: the input descriptors only exist in resolver previews, not in the profile context. Fixing it needs a larger refactor.
- Navigation blocker on the install step, EKS Anywhere "unavailable" styling,
aria-describedbyon catalog errors, the staleInputSelectSmallvalue, and the semantic close-button query: product or scope calls that I left for follow-ups.
Testing
- Jest for
clusters/feature(78 suites) andconsole-sharedpass -
tscand ESLint clean on the touched libs
🤖 Generated with Claude Code
Summary by cubic
Follow-up to the engine v2 review, fixing the remaining valid Cubic and Copilot feedback.
Fixes:
- Show an empty state instead of a disabled layer when no profile layer can be opened.
- Filtered search no longer opens a component with nothing to configure; the empty state appears instead.
- Polling for the Operator status now keeps running while the Operator state is missing by default;
stopPollingWhenMissingopts into stopping when the cluster is known to have no Operator. - Reverted edits are left out of the profile save so the field keeps its schema default.
- Sensitive number inputs are masked in both catalog variable layouts.
- Provider card icons, including cloned SVGs, are hidden from assistive technologies.
- The Operator status panel moved from a tooltip to a popover named "Qovery Operator status" that opens on click, making the update action reachable by keyboard.
- Tests cover the new behavior, including the analytics event for the EKS Anywhere access request and the empty/disabled layer cases.