Skip to content

feat(clusters): label Operator updates in deployment history - #3098

Merged
pggb25 merged 2 commits into
stagingfrom
feat/cluster-history-operator-update
Oct 13, 2026
Merged

pggb25 merged 2 commits into
stagingfrom
feat/cluster-history-operator-update

Conversation

@pggb25

@pggb25 pggb25 commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

q-core now returns operation (CLUSTER | OPERATOR_UPDATE) on cluster deployment history entries. A Qovery Operator update on a BYOK / EKS Anywhere cluster no longer looks like a plain cluster deploy.

  • Bump qovery-typescript-axios 1.1.1004 → 1.1.1007.
  • DeploymentAction takes an optional operation and resolves label, icon and description together: an Operator update reads Operator with the rotate-right icon, and "Operator update" as screen-reader text. Other call sites are unchanged.
  • Deployment list: uses it; Maintenance / Dry run badges unchanged. The action group can wrap, so badges no longer overlap the status icon.
  • Last deployment (cluster overview): same, only when the latest history entry matches the cluster status's last_execution_id.
  • Deployment logs header: "Operator update" badge.
  • Audit logs: follow-up, once the API exposes operation on audit events.

Screenshots / Recordings

Screenshot 2026-10-13 at 14 58 32

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

Summary by cubic

Labels Operator updates in cluster deployment history so they no longer read as regular "Deploy" actions. Bumps qovery-typescript-axios to 1.1.1007 for the new operation field on ClusterDeploymentHistory, and DeploymentAction now resolves the Operator label, icon, and screen-reader text in one place.

  • Operator updates show "Operator" (with sr-only "Operator update" text) in the deployment list and last-deployment section, and an "Operator update" badge in the deployment logs header.
  • The last-deployment section ignores operation when the history entry's execution ID doesn't match the cluster status's last execution.
  • DeploymentAction takes operation and resolves the label, icon, and description itself; the Status cell's action group can wrap so badges never overlap the status icon.

Written for commit 44e1b6b. Summary will update on new commits.

View guided diff Turn on auto-fix

@nx-cloud

nx-cloud Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 44e1b6b

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

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


☁️ Nx Cloud last updated this comment at 2026-10-13 13:07:41 UTC

@codecov

codecov Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.51%. Comparing base (dc96359) to head (44e1b6b).

Additional details and impacted files
@@             Coverage Diff             @@
##           staging    #3098      +/-   ##
===========================================
- Coverage    53.79%   51.51%   -2.29%     
===========================================
  Files          915     1382     +467     
  Lines        23295    30853    +7558     
  Branches      7238     9077    +1839     
===========================================
+ Hits         12532    15894    +3362     
- Misses        8706    12422    +3716     
- Partials      2057     2537     +480     
Flag Coverage Δ
unittests 51.51% <100.00%> (-2.29%) ⬇️

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.

All reported issues were addressed across 15 files

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

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

Comment thread libs/domains/audit-logs/feature/src/lib/row-event/row-event.spec.tsx Outdated
Bump qovery-typescript-axios to 1.1.1007 for the new `operation` field on
ClusterDeploymentHistory. An Operator update now reads "Operator" (hover
tooltip "Operator update") instead of "Deploy" in the cluster
deployment list and the last-deployment section, and gets an "Operator
update" badge in the deployment logs header. The last-deployment section
only trusts `operation` when the history entry matches the cluster status's
last execution. The audit logs suffix cluster events whose change carries
`operation: OPERATOR_UPDATE` with "· Operator update", with the full label
in a tooltip since the event column truncates.

DeploymentAction gains an optional `label` override so the Operator action
reuses its markup. The Status cell's action group can now wrap so badges
never overlap the status icon.
@pggb25
pggb25 force-pushed the feat/cluster-history-operator-update branch from b310958 to 358a277 Compare October 13, 2026 10:44
<div className={twMerge('flex items-center gap-2 text-sm', className)}>
<span className={iconClassName}>{action.icon}</span>
<span className={twMerge('text-neutral', textClassName)}>{action.status}</span>
<span className={twMerge('text-neutral', textClassName)}>{label ?? action.status}</span>

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.

Could we avoid overriding just the label here? The icon still comes from status, so the two can get out of sync. I'd rather resolve the label and icon together for an Operator update

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Done: DeploymentAction takes operation and resolves label, icon and description together. The label override is gone.

return (
<Tooltip content="Operator update">
<div>
<DeploymentAction status={status} label="Operator" />

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.

Do we need another component just to override the label and add a tooltip? Could we handle deployment operations in one place, keeping the action name, icon and description consistent?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Removed ClusterDeploymentAction, it's all in DeploymentAction now.

return eventName.split('_').map(upperCaseFirstLetter).join(' ')
}

const isOperatorUpdateEvent = ({ target_type, change }: OrganizationEventResponse) => {

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.

Could we expose operation directly on the audit event through the API, like we do for deployment history, instead of parsing change on the frontend?

@pggb25 pggb25 Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Agreed. I removed the audit logs from this PR; we'll add an OPERATOR_UPDATE audit event type in q-core and redo it on top.

<span className="block truncate whitespace-nowrap">
<span className={isEventTypeFailed ? 'text-negative' : 'text-brand'}>
{formatEventName(event.event_type ?? '')}
<Tooltip content={`${eventName} · Operator update`} disabled={!isOperatorUpdate}>

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.

Could we build the full event label once and reuse it for the text and tooltip? Right now, “Operator update” is handled separately in both places

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Gone with the audit logs part, will be handled in the follow-up.


return (
<Tooltip content="Operator update">
<div>

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.

The tooltip only opens on hover. Could we also make it accessible when the row or link is focused with the keyboard?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Tooltip removed. "Operator update" is now screen-reader text in the action, so it's part of the row and card link name.

DeploymentAction takes the cluster deployment `operation` and resolves the
label, icon and screen-reader description in one place: an Operator update
reads "Operator" with the rotate-right icon and "Operator update" as
sr-only text. This replaces the ClusterDeploymentAction wrapper, its
tooltip and the `label` override.

The audit-logs labelling is dropped from this PR; it will come back once
the API exposes `operation` on audit events.
@pggb25
pggb25 requested a review from RemiBonnet October 13, 2026 13:11
@pggb25
pggb25 merged commit d0264ed into staging Oct 13, 2026
10 of 11 checks passed
@pggb25
pggb25 deleted the feat/cluster-history-operator-update branch October 13, 2026 13:22
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.

2 participants