mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2026-11-16 05:46:14 +08:00
67ff2777d6dd70c0303b0d89ee44da3ad47d894c
10
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
67ff2777d6 |
feat: add resource health dashboard in a Components tab (#1225)
* feat: add component health dashboard sections Add health summary and component health tables with severity filters and expandable check details. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * feat: use health API group for component health resources Update dashboard resource types to use the health.harvesterhci.io API group. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * feat: add component health ignore controls Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * feat: gate component health behind the componentHealth feature flag Only show the component health dashboard sections on Harvester v1.10.0 and later. Signed-off-by: Jack Yu <jack.yu@suse.com> * fix: address component health review comments - sort the health summary table by a severity rank - use buttons instead of anchors for restore and show more actions - let the affected resources list expand so every resource can be restored - widen the ignore popup and cap its height Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * refactor: split component health into dedicated components Move the health summary, component health tabs and ignore popup out of the dashboard page into components/health, and share the constants and helpers through utils/component-health. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * fix: sort component health by severity rank Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * fix: toggle health rows in place and tell empty filters from no checks - toggle the expanded message and resource ids by mutating the unwrapped arrays, the template does not pass refs - show "No checks match the selected filters" when the severity filters hide existing checks, keep "No issues detected" for a report without checks Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * refactor: fetch component health resources in their own components Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Jack Yu <jack.yu@suse.com> * feat: move health into a Components tab with the checks as sub-rows The dashboard showed the summary table, then side tabs with a second table for each component. It is now one table in a new Components tab next to the Events tabs: one row per component, which opens to its checks. Rows start closed, and the component name is a button so the keyboard can open them. The tab only shows when the addon's resources exist. The table's own filter box replaces the severity dropdown. It only looks at the table's own rows and the checks are in the sub-rows, so the rows give it the text of their checks, a row only shows the checks it found, and the rows it found open. Ignoring a check moves from a popover, which cut off its Reason field and Ignore button, to an RcModal that starts over each time it opens. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * refactor: use RcButton for the component health buttons The Ignore modal's button already was one. This moves the rest of them, the row's Ignore, Restore, the "show more" links and the component name, off the global btn classes. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * refactor: manage one ignore rule per check from the row's actions A check now has one rule, reached through the table's action menu: create it when the check has none, view, edit or delete it when it has one. View and edit use the same modal as create. This replaces the Ignore button and the Restore links, which could only delete a whole rule and said the check was restored when it wasn't. The modal's section titles were the radio group's h3, as big as the modal's own title. They follow what rancher/dashboard does in its forms now. The actions follow what the user may do. The rules are only loaded with their schema, and a list that fails no longer empties the table. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * refactor: let the tables filter by themselves and show resources as chips The filter had logic of its own on top of the table's. The nested table now filters its rows the way the outer one does, with what is typed in the box. Rows no longer open by themselves, which is how the other tables with sub-rows behave. Expand All and Collapse All are there instead, copied from what the table has from shell 3.0.15. Affected resources are chips under the name the UI has for their type, with the usual counter badge and the API version beside it. Ignored resources are outlined instead of filled, and the text of an ignored check is muted. The links use the shell's wording. The component rows lose Last Updated. The summary only has one time, for its counts as a whole, so it said nothing about the component in the row. They say Error instead of Critical, as the checks inside them do. The Node column goes, as nothing sets its label. The Components tab shows the number of errors as a badge, as nothing else on the page tells there are any. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: name the ignore rule after its check and make its expiry clear - Name the rule the UI makes after its check, so Kubernetes refuses a second one for the same check. The row's menu only manages that rule. - Show the rule's current expiry above the durations, and the new one under them once a duration is chosen. Edit starts with none chosen, Save stays off until something changes, and a warning says when an expired rule would stay expired. - Delete the rule through the shell's delete prompt, like every other delete. - Say which list could not be loaded, instead of showing it as empty. - Keep the full count of affected resources, say how many ignored ones are left out of the list, and count them on Show ignored. - Drop the checks' Last Updated, which is the time of their whole report. - Leave out the row menu when no check has an action. - Mark the Components tab with the shell's alert icon when there are errors, with their number in its tooltip, instead of a badge. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Jack Yu <jack.yu@suse.com> Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> Co-authored-by: Jack Yu <jack.yu@suse.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> |
||
|
|
73eaccc2ad |
fix: show VNC console dialogs in full screen and restore deleting custom shortcut keys (#1222)
* fix: show the VNC console's dialogs in full screen Only the console went full screen and dialogs render outside of it, so the Ctrl+Alt+Del and Soft Reboot confirmations, among others, stayed hidden behind it until full screen was left. Put the whole page in full screen instead. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: bring back deleting saved VNC console shortcut keys The Vue 3 migration dropped the close button from the list of saved shortcuts, which left no way to delete one. Restore it, and remove by position in the list: the old code parsed the displayed HTML to find the shortcut, which cannot match one with the Space key in it, such as Ctrl+Space. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: tidy the VNC console's custom shortcut keys Give the saved shortcuts in the menu the same space as the separator above them, and name the dialog's buttons Cancel and Save, which say what they do. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
12c28c08fa |
feat: align the storage performance options with the Rancher machine pool form (#1212)
* feat: align the storage performance options with the Rancher machine pool form Show the storage performance profile on every volume instead of behind a collapsible toggle, and move the VM-wide options to a plain Storage Performance section in the Advanced Options tab. Put the Native I/O tip in a live region so screen readers announce the cache mode change, use an integer input for the I/O thread count, and use the same copy as the Rancher form. Skip the view-only backup row in the image and container volumes when it has nothing to show, so it no longer adds an empty gap above the profile. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: announce the storage performance warnings and name the virtio requirement - Put the bus tip and the Filesystem warning in an always-rendered status region. They appear above the field being changed, so screen readers need them announced. - Say in the bus tip that a dedicated I/O thread needs the virtio bus, because KubeVirt rejects it on any other bus. - Mark I/O Thread Count as required while editing, like the Rancher form. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: state only the dedicated I/O thread requirement in the bus tip Neither the Harvester docs nor KubeVirt tie cache mode or I/O mode to the bus, so stop saying that those options work best on virtio. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
77b643540e |
fix: label the VPC group of subnets without a VPC as None (#1210)
Kube-OVN sets a subnet's VPC (ovn-cluster when none is given), but a subnet it hasn't processed, such as one with an invalid provider, has none. The VPC page grouped those under "Virtual Private Cloud:" with an empty name, and its Create Subnet, Topology and actions buttons pointed at no VPC. Show None as the VPC name for that group and leave out its VPC buttons. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
78d0a591a8 |
feat: move the device pages into a Hardware Devices side nav group (#1211)
The PCI, SR-IOV Network, SR-IOV GPU, vGPU, vGPU MIG and USB device pages were listed under Advanced. Give them their own top-level group, placed after Backup and Snapshots. Add-ons stay under Advanced. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
6e0e0237ef |
feat: use the SUSE Virtualization product name on Prime (#1202)
* feat: switch the product name with Rancher Prime Use a [[Harvester]] token for the product name in the translations, so Rancher 2.16 fills it from the l10n global that harvester-manager registers: SUSE Virtualization on Rancher Prime, Harvester otherwise. Rancher before 2.16 shows the tokens as written, so on those hosts (and standalone) the extension resolves them to Harvester itself. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: switch the standalone product name with the server flavor Standalone has no Rancher Prime, so register the [[Harvester]] l10n global from the server-flavor setting instead: SUSE Virtualization on prime, Harvester otherwise. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: point the network policy banner to the documentation Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: use the SUSE theme in standalone Prime Standalone Prime kept the harvester brand and only overrode the primary colour, so the rest of the palette and the fonts didn't match Rancher Prime. Switch the ui-brand setting to suse in the store when the server flavor is prime, which makes the shell load the SUSE theme. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: keep the SUSE theme after a brand setting change event The watcher also reads the setting's value, so a change from the server loaded into the same object switches the brand back to suse. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
d6f6f7c54c |
chore(deps): bump @rancher/shell to 3.0.14 (#1208)
* chore(deps): bump @rancher/shell to 3.0.14 3.0.14 resolves [[name]] tokens in translations from values registered as l10n globals, which the standalone UI needs to pick the product name. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: save cloud-config template edits with @rancher/shell 3.0.14 The YamlEditor of shell 3.0.14 no longer emits onChanges, so editing a template saved its old cloud config. Copy the text from update:value, which both shell versions emit. Jest transforms @replit/codemirror-vim-core, an ESM-only dependency of the new YamlEditor, like the dashboard does. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: keep the YAML editor heights with CodeMirror 6 The min-height rules targeted the CodeMirror 5 element, so the editors shrank to their text. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: reject IP ranges the network settings don't support The CIDR check of @rancher/shell 3.0.14 also accepts short forms such as 10.1/16, extra parts and IPv6, so the VM migration, RWX and storage network settings saved them. Use a strict IPv4 CIDR check of our own. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: keep the look of the file selector buttons The FileSelector of @rancher/shell 3.0.14 no longer takes button classes and renders a medium secondary button. Pass the variant and size that match the previous primary and secondary buttons. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: keep Enter in a migration wizard field on the same step The Wizard of @rancher/shell 3.0.14 renders its step headers as submit buttons, so Enter in a text field clicked the first one and jumped back to step 1. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: show the created message after a restore, upgrade or upload Since @rancher/shell 3.0.14, save() no longer shows the message for resources with a generated name; callers show it with notifyGeneratedName(). Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * refactor: fold the logging output buffer with the CodeMirror 6 helpers The YAML editor of @rancher/shell 3.0.14 is CodeMirror 6, and its CodeMirror 5 methods are deprecated. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: keep the shell's table views off in standalone @rancher/shell 3.0.14 turns its table views on for every list in the standalone UI, as the server has no ui-configurable-tables feature and the default is on. The table views drop the filters the lists put in the table header, which also left the Images list empty. Add the feature, disabled, to the management store in standalone only. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: reject zero-padded octets in IP ranges Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
2f72f25b6e |
feat: improve VNC console with a version gate, in-use screen and confirmations (#1195)
* feat: improve vnc console Signed-off-by: Andy Lee <andy.lee@suse.com> * fix: keep VNC console retries from kicking the active session Builds on "feat: improve vnc console" (#1147) by Andy Lee. - Keep retrying with preserveSession after a failed reconnect attempt, so a displaced console waits for the other session to be released instead of failing immediately or taking the console back. - Close the RFB socket when noVNC asks for credentials, so a failed console does not hold the VNC session. - Restore Custom Shortcut Keys, which were removed in #1147. - Add unit tests for the console reconnect behavior. Related: harvester/harvester#10420 Signed-off-by: Alejandro Bonilla <abonilla@suse.com> * fix: expose VNC quality and compression settings - Add 0-9 sliders for the JPEG quality and compression level, which were already passed to noVNC but could not be changed. - Mark the connection status as a polite live region so screen readers announce connection changes. Related: harvester/harvester#10420 Signed-off-by: Alejandro Bonilla <abonilla@suse.com> * fix: gate VNC session protection by version and rework the in-use screen - Add the vncPreserveSession feature flag for Harvester v1.7.0, the first release whose KubeVirt (1.6.3) honours preserveSession. Without it the console connects as before, offers no Take Over and does not reconnect on its own after the session drops, so two open consoles no longer keep kicking each other out. - Replace the error page with a short card that says when the console is in use, and confirm Take Over in a modal instead of window.confirm. - Keep the overlay text readable on its dark background. - Show "Connected (view only)", translate the Ctrl+Alt+Del label and remove unused translation keys. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: show whether the VNC console has keyboard focus noVNC hides the canvas focus outline, so nothing showed where typing would go. Draw a ring around the console while it has focus, show a toolbar hint ("Typing goes to the virtual machine" / "Click the console to type"), focus the console when it connects and return focus to it after sending keys from the toolbar. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * feat: confirm Ctrl+Alt+Del and Soft Reboot in the VNC console Both buttons can restart the virtual machine with one click: Soft Reboot always, and Ctrl+Alt+Del on most Linux guests. Ask in a modal first, as the VM list already does for Soft Reboot, and return focus to the console after. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * fix: return focus to the VNC console after its confirm modal closes The modal gave focus back to the toolbar button that opened it, so typing did not reach the console until it was clicked again. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> * refactor: drop the VNC keyboard focus hint from the toolbar The ring around the console already shows when it has keyboard focus. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> --------- Signed-off-by: Andy Lee <andy.lee@suse.com> Signed-off-by: Alejandro Bonilla <abonilla@suse.com> Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> Co-authored-by: Andy Lee <andy.lee@suse.com> Co-authored-by: Alejandro Bonilla <abonilla@suse.com> |
||
|
|
00584f1d19 |
chore(deps): bump @rancher/shell to 3.0.13 (#1130)
Clears 26 of the 54 open Dependabot alerts (axios, dompurify, serve-static, and drops vulnerable send / @tootallnate/once copies). 3.0.13 ships the flat-config ESLint 10 toolchain, so lint now routes through the @rancher/shell launcher (keeping the legacy .eslintrc on ESLint 7); a prelint step installs an ESLint-7-compatible eslint-plugin-jest into the isolated toolchain. Signed-off-by: Marcelo Fukumoto <marcelo.fukumoto@suse.com> |
||
|
|
3f39d561be |
security: fix 15 transitive Dependabot alerts via yarn.lock re-resolution (#1115)
Re-resolve 15 vulnerable transitive dependencies to their latest in-range patched versions in yarn.lock only (no package.json changes): @babel/core, @babel/plugin-transform-modules-systemjs, brace-expansion, fast-uri, form-data, http-proxy-middleware, immutable, joi, js-cookie, launch-editor, nanoid, shell-quote, svgo, websocket-driver, ws. The remaining alerts are pinned by parent packages (chiefly @rancher/shell) or need a cross-major bump, so they can't be resolved by the lockfile alone; they are tracked separately. Signed-off-by: Marcelo Fukumoto <marceloyfukumoto@gmail.com> |