fix(clusters): address engine v2 review comments

Merged
RM
13d ago
+485-31

Summary

Addresses the remaining unresolved Cubic and Copilot review comments on #2997. Based on feat/cluster-engine-v2.

Fixed

  • Cluster creation: Continue now waits until the Operator configuration has been checked, for the current values, without violations. A missing, refetching or failed check keeps it disabled.
  • Operator footer:
    • Polling stops once a 404 shows the cluster has no Operator.
    • Other API errors now show a "status unavailable" state instead of hiding the footer.
  • Profile array fields:
    • Object items with nested settings can no longer be added through the scalar-only modal.
    • Values outside allowedValues are rejected.
  • Changes bar: Save and Save and deploy are disabled while either is pending, so the keyboard can't trigger them again.
  • Profile layout:
    • The header shows the cluster's cloud provider instead of always AWS.
    • The layers sidebar stays visible below lg (narrower) instead of disappearing with no replacement.
  • Inputs:
    • The row checkbox has an accessible name.
    • InputSelectSmall falls back to its visible label as its accessible name.
    • InputSearch follows external defaultValue changes (except while focused, to avoid overwriting typing).
    • Descriptions are no longer clamped while searching.
  • EKS Anywhere card: shows "Request access" when the feature isn't enabled.
  • Tokens: surface.warning.strong (--warning-5) renamed to surface.warning.highlight, since every other strong token uses the vivid step.
  • Tests:
    • InputTextSmall id coverage.
    • The resolver-refetch test now simulates a refetch.
    • The creation-failure test checks the mutation was called.
    • Two misleading test names fixed.

Not changed

  • omitEmptyValues dropping '': intentional. '' keeps a cleared field empty in the form, and it's left out of the request so the backend applies the schema default.
  • Array item modal not validating defaults in add mode: react-hook-form 7.52 already computes isValid from the default values on mount. A regression spec covers optional and prefilled required items.
  • Operator status tooltip → Popover: the tooltip was an explicit product choice; a Popover version was tried and reverted.
  • Item modal cleanup on unmount (Copilot): already fixed on the base branch.

Test plan

  • jest: clusters feature, shared ui, console-shared, util-js, service-helm
  • tsc app and touched libs, ESLint, Prettier

🤖 Generated with Claude Code


Summary by cubic

Addresses the remaining unresolved review comments on the cluster engine v2 PR, tightening creation safeguards and fixing profile display and accessibility issues.

Bug Fixes

  • Continue waits for the Operator configuration check to finish without violations; a missing, refetching, paused, outdated, or failed check keeps it disabled, and a failed check can be retried.
  • Operator footer polling stops once a 404 confirms no Operator, and other API errors override the cached status with a "status unavailable" state.
  • Array items with nested settings can no longer be added through the scalar-only modal and values outside allowedValues are rejected.
  • Save and Save and deploy are disabled while either is pending.
  • Profile header shows the cluster's cloud provider, and the layers sidebar stays visible below lg.
  • EKS Anywhere card now shows "Request access" when the feature isn't enabled.
  • Row checkbox and InputSelectSmall gain accessible names; InputSearch follows external defaultValue changes except while focused and shows the clear button for external values; descriptions aren't clamped while searching.
  • surface.warning.strong renamed to surface.warning.highlight for token consistency.
  • Tests updated to simulate refetches, assert mutation calls, and fix misleading names.