feat: hide KVM tab on ISM systems. Use IDER tab instead#3418
Conversation
88ef1aa to
fbf2663
Compare
6d955f2 to
5d3d9b5
Compare
There was a problem hiding this comment.
Pull request overview
This PR introduces an IDER tab in Device Detail and conditionally swaps KVM for IDER on ISM systems, along with the required i18n strings and unit tests.
Changes:
- Add a new standalone
IderComponent(template/styles/spec) that hosts the IDER UI toolkit component. - Update Device Detail navigation to show IDER (hide KVM) for ISM systems by detecting SKU from the AMT version response.
- Add new i18n keys for the IDER category and IDER UI actions across supported locales.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/assets/i18n/ar.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/de.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/en.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/es.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/fi.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/fr.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/he.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/it.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/ja.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/nl.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/ru.json | Adds IDER category + IDER action labels (attach/stop). |
| src/assets/i18n/sv.json | Adds IDER category + IDER action labels (attach/stop). |
| src/app/profiles/profiles.component.spec.ts | Stabilizes tests by restoring environment.cloud via try/finally and recreating component per mode. |
| src/app/devices/ider/ider.component.ts | New IDER tab implementation: token/consent/redirection flow + file selection + toolkit wiring. |
| src/app/devices/ider/ider.component.html | New IDER UI: attach image + stop button + <amt-ider> host. |
| src/app/devices/ider/ider.component.scss | New styles for the IDER toolbar/loading UI. |
| src/app/devices/ider/ider.component.spec.ts | Unit tests for the new IDER component behavior. |
| src/app/devices/device-detail/device-detail.component.ts | Adds ISM SKU detection and computed categories to swap KVM vs IDER. |
| src/app/devices/device-detail/device-detail.component.html | Updates navigation to iterate computed categories() and renders the new ider case. |
| src/app/devices/device-detail/device-detail.component.spec.ts | Adds tests for ISM vs non-ISM category filtering and route-driven currentView. |
3deea9c to
adb9184
Compare
9cddb38 to
e9e9989
Compare
c110e13 to
785dcb9
Compare
|
@nmgaston I tested these changes with MPS and I can see the IDER tab. Since we do not support KVM, there is currently no way to check whether disks are attached or to track the progress/status from the UI. I think this is important to explore before we push these changes to |
@madhavilosetty-intel - You do see the IDER tab for an ISM system? I'm not following the rest. On an ISM system, you wouldn't have KVM, so this just allows the user to still use IDER but without clicking the KVM tab and having it try to connect to something that is not supported which is misleading when the user forgets or doesn't know that KVM is not supported on that type of system. The main objective was to remove the KVM tab to prevent that from happening, but it was requested to keep the IDER capability and move it to a new tab. |
16d5ce3 to
0f20d6c
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 24 out of 25 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
src/app/devices/kvm/kvm.component.ts:388
onCancelIDER()clears the file input viadocument.getElementById('file'). This repo already contains multipleid="file"inputs (e.g. KVM, IDER, cert dialogs, domain PFX upload), so this call can target the wrong element if more than one is present in the DOM.
Prefer clearing via the template ref (#fileInput) you already have in the template (e.g. pass it into onCancelIDER(fileInput) or store it via @ViewChild) and avoid relying on a global id.
// Clear the file input so the same file can be selected again
const fileInput = document.getElementById('file') as HTMLInputElement
if (fileInput) {
fileInput.value = ''
}
Add a reusable app-ider-status component that surfaces live IDE-R connection state and data-transferred, driven by the amt-ider iderData output. Lay the IDER tab out as two cards (info + status/attach), show a note that KVM is unavailable on Intel Standard Manageability systems, move the IDER tab next to SOL, and add the supporting i18n strings across all locales.
ba2fd3c to
56d4d16
Compare
|
@nmgaston Please resolve the conflicts |
merge conflicts resolved. |
1e01ea7 to
c79ebce
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 28 out of 29 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
src/app/devices/device-detail/device-detail.component.ts:196
ngOnInit()usesswitchMapdirectly onactivatedRoute.params, which will cancel an in-flightgetAMTVersion()request when only thecomponentroute param changes (same device). If the user clicks between tabs quickly before the AMT version call completes,isISMSystemcan remain reset tofalse, causing the KVM/IDER filtering and view-redirect logic to be wrong for that device.
Consider splitting this into two streams: (1) handle component param updates with tap (no HTTP), and (2) drive the AMT version fetch off params.id with map + distinctUntilChanged + switchMap so tab switches don’t cancel the capability fetch.
ngOnInit(): void {
this.activatedRoute.params
.pipe(
takeUntil(this.destroy$),
switchMap((params) => {
const deviceChanged = params.id !== this.deviceId
this.deviceId = params.id
this.currentView = params.component || 'general'
if (!deviceChanged) {
const isIsm = this.isISMSystem()
if (isIsm && this.currentView === 'kvm') this.currentView = 'ider'
if (!isIsm && this.currentView === 'ider') this.currentView = 'kvm'
return of(null)
}
// Reset derived capability flags so they don't stay stale if the AMT version call fails.
this.isISMSystem.set(false)
this.isLoading.set(true)
36f3ed1 to
c216cdc
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 31 out of 32 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
src/app/devices/device-detail/device-detail.component.ts:212
- When getAMTVersion() fails (amtVersion == null), currentView can remain set to 'ider' from the route while categories() will hide the IDER entry (because isISMSystem is reset to false). This can leave the UI in an inconsistent state (sidebar missing the active view).
next: (amtVersion) => {
if (amtVersion == null) {
this.isLoading.set(false)
return
}
| this.loadingStatus.set('ider.status.checkingConsent.value') | ||
| this.consentReady = false | ||
|
|
||
| return this.getAMTFeatures().pipe( |

This pull request introduces the new IDER (IDE Redirection) tab for ISM systems while hiding the unsupported KVM tab. The IDER tab allows users to still perform IDER operations that were included on the KVM tab, without trying to start an unsupported capability on ISM systems. The changes include UI updates, component additions, and logic to conditionally show IDER or KVM (Keyboard Video Mouse) based on the device type. Comprehensive tests have also been added to ensure correct behavior. The most important changes are summarized below.
PR Checklist
What are you changing?
IDER Feature Implementation:
IderComponent(src/app/devices/ider/ider.component.*) with UI for uploading disk images and controlling IDER sessions.DeviceEnableIderComponentdialog for confirming IDER enablement, with corresponding template, styles, and tests.Device Detail View Logic and UI:
DeviceDetailComponentto dynamically show either the KVM or IDER option based on the device's AMT SKU, hiding KVM for ISM systems and showing IDER instead. The categories list is now a computed property that filters options accordingly.Testing and Robustness:
DeviceDetailComponentto cover the conditional display of KVM/IDER, route param handling, and enterprise-only categories.Dependency Injection and Error Handling:
DeviceDetailComponentto use injected services for translation, device info, and snack bar notifications, with error handling for AMT version retrieval.