History log of /openbmc/webui-vue/src/ (Results 1 – 25 of 710)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
313d15cf18-Aug-2025 jason westover <jwestover@nvidia.com>

Fix Unit tests and useI18n() misuse

Vue 3's vue-i18n requires useI18n() to be called within setup()
or reactive contexts. Calling it in Options API data() creates
disconnected i18n instances that ca

Fix Unit tests and useI18n() misuse

Vue 3's vue-i18n requires useI18n() to be called within setup()
or reactive contexts. Calling it in Options API data() creates
disconnected i18n instances that cannot resolve linked messages.

Component fixes:
- Enable globalInjection in i18n.js for automatic $t injection
- Remove explicit useI18n() imports from 84 components that
incorrectly called useI18n().t in their data() functions

Unit test fixes:
- Mock @/i18n module in jest.setup.js because Webpack's
require.context() does not work in Jest, leaving the real
module with no locale messages loaded
- Re-export real createI18nInstance so i18n unit tests work
- Update snapshots to reflect real translated text instead
of raw translation keys
- Fix b-form-radio/checkbox stubs to wrap content in div for
proper data-test-id attribute inheritance
- Remove duplicate i18n plugin installations from individual
test files that caused 'already registered' warnings
- Suppress expected missing-key warning in vendor overlay test

Tested:
- Sanity testing on webui, ensured translations work.
- All Unit tests pass (19/19) with no Errors or Warnings.

Change-Id: I9789acd823261eccc7affde0957dd22e8fec06b1
Signed-off-by: Jason Westover <jwestover@nvidia.com>

show more ...


/openbmc/webui-vue/jest.config.js
components/AppHeader/AppHeader.vue
components/AppNavigation/AppNavigation.vue
components/Global/ButtonBackToTop.vue
components/Global/FormFile.vue
components/Global/InfoTooltip.vue
components/Global/LoadingBar.vue
components/Global/Search.vue
components/Global/TableCellCount.vue
components/Global/TableDateFilter.vue
components/Global/TableFilter.vue
components/Global/TableRowAction.vue
components/Global/TableToolbar.vue
components/Global/TableToolbarExport.vue
i18n.js
views/ChangePassword/ChangePassword.vue
views/HardwareStatus/Inventory/Inventory.vue
views/HardwareStatus/Inventory/InventoryServiceIndicator.vue
views/HardwareStatus/Inventory/InventoryTableAssembly.vue
views/HardwareStatus/Inventory/InventoryTableBmcManager.vue
views/HardwareStatus/Inventory/InventoryTableChassis.vue
views/HardwareStatus/Inventory/InventoryTableDimmSlot.vue
views/HardwareStatus/Inventory/InventoryTableFans.vue
views/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue
views/HardwareStatus/Inventory/InventoryTableProcessors.vue
views/HardwareStatus/Inventory/InventoryTableSystem.vue
views/HardwareStatus/Sensors/Sensors.vue
views/Login/Login.vue
views/Logs/Dumps/Dumps.vue
views/Logs/Dumps/DumpsForm.vue
views/Logs/Dumps/DumpsModalConfirmation.vue
views/Logs/EventLogs/EventLogs.vue
views/Logs/PostCodeLogs/PostCodeLogs.vue
views/Operations/FactoryReset/FactoryReset.vue
views/Operations/FactoryReset/FactoryResetModal.vue
views/Operations/Firmware/Firmware.vue
views/Operations/Firmware/FirmwareAlertServerPower.vue
views/Operations/Firmware/FirmwareCardsBios.vue
views/Operations/Firmware/FirmwareCardsBmc.vue
views/Operations/Firmware/FirmwareFormUpdate.vue
views/Operations/Firmware/FirmwareModalSwitchToRunning.vue
views/Operations/Firmware/FirmwareModalUpdateFirmware.vue
views/Operations/KeyClear/KeyClear.vue
views/Operations/Kvm/KvmConsole.vue
views/Operations/RebootBmc/RebootBmc.vue
views/Operations/SerialOverLan/SerialOverLan.vue
views/Operations/SerialOverLan/SerialOverLanConsole.vue
views/Operations/ServerPowerOperations/BootSettings.vue
views/Operations/ServerPowerOperations/ServerPowerOperations.vue
views/Operations/VirtualMedia/ModalConfigureConnection.vue
views/Operations/VirtualMedia/VirtualMedia.vue
views/Overview/Overview.vue
views/Overview/OverviewCard.vue
views/Overview/OverviewDumps.vue
views/Overview/OverviewEvents.vue
views/Overview/OverviewFirmware.vue
views/Overview/OverviewInventory.vue
views/Overview/OverviewNetwork.vue
views/Overview/OverviewPower.vue
views/Overview/OverviewQuickLinks.vue
views/Overview/OverviewServer.vue
views/PageNotFound/PageNotFound.vue
views/ProfileSettings/ProfileSettings.vue
views/ResourceManagement/Power.vue
views/SecurityAndAccess/Certificates/Certificates.vue
views/SecurityAndAccess/Ldap/Ldap.vue
views/SecurityAndAccess/Ldap/TableRoleGroups.vue
views/SecurityAndAccess/Policies/Policies.vue
views/SecurityAndAccess/Sessions/Sessions.vue
views/SecurityAndAccess/UserManagement/ModalSettings.vue
views/SecurityAndAccess/UserManagement/UserManagement.vue
views/Settings/DateTime/DateTime.vue
views/Settings/Network/ModalDefaultGateway.vue
views/Settings/Network/ModalDns.vue
views/Settings/Network/ModalHostname.vue
views/Settings/Network/ModalIpv4.vue
views/Settings/Network/ModalIpv6.vue
views/Settings/Network/ModalMacAddress.vue
views/Settings/Network/Network.vue
views/Settings/Network/NetworkGlobalSettings.vue
views/Settings/Network/NetworkInterfaceSettings.vue
views/Settings/Network/TableDns.vue
views/Settings/Network/TableIpv4.vue
views/Settings/Network/TableIpv6.vue
views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
views/Settings/SnmpAlerts/ModalAddDestination.vue
views/Settings/SnmpAlerts/SnmpAlerts.vue
/openbmc/webui-vue/tests/jest.setup.js
/openbmc/webui-vue/tests/unit/AppHeader.spec.js
/openbmc/webui-vue/tests/unit/AppNavigation.spec.js
/openbmc/webui-vue/tests/unit/Global/PageTitle.spec.js
/openbmc/webui-vue/tests/unit/Global/Search.spec.js
/openbmc/webui-vue/tests/unit/Global/TableDateFilter.spec.js
/openbmc/webui-vue/tests/unit/Global/__snapshots__/InfoTooltip.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/InputPasswordToggle.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/LoadingBar.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/PageContainer.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/PageTitle.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/Search.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/TableCellCount.spec.js.snap
/openbmc/webui-vue/tests/unit/Global/__snapshots__/TableToolbar.spec.js.snap
/openbmc/webui-vue/tests/unit/__snapshots__/AppHeader.spec.js.snap
/openbmc/webui-vue/tests/unit/__snapshots__/AppNavigation.spec.js.snap
/openbmc/webui-vue/tests/unit/i18n.locale-alias.spec.js
/openbmc/webui-vue/tests/unit/i18n.vendor.spec.js
/openbmc/webui-vue/tests/unit/testUtils.js
/openbmc/webui-vue/tests/unit/views/SecurityAndAccess/UserManagement/ModalUser.spec.js
/openbmc/webui-vue/tests/unit/views/Settings/Network/ModalHostname.spec.js
/openbmc/webui-vue/tests/unit/views/Settings/Network/ModalMacAddress.spec.js
7a1c39be12-Jan-2026 Nikhil Ashoka <a.nikhil@ibm.com>

Fix boot source override handling

Add optional chaining to avoid errors when
BootSourceOverrideTarget is missing.

Change-Id: I176119ac115d92749722ed74aabd84ebd2dae384
Signed-off-by: Nikhil Ashoka <

Fix boot source override handling

Add optional chaining to avoid errors when
BootSourceOverrideTarget is missing.

Change-Id: I176119ac115d92749722ed74aabd84ebd2dae384
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>

show more ...

75b0203921-Dec-2025 Jason Westover <jwestover@nvidia.com>

Migrate Vuelidate from v1 to v2 API

Complete the migration from Vuelidate v1 (vuelidate 0.7.7) to v2
(@vuelidate/core 2.0.3 and @vuelidate/validators 2.0.4).

Changes include:
- Replace imports from

Migrate Vuelidate from v1 to v2 API

Complete the migration from Vuelidate v1 (vuelidate 0.7.7) to v2
(@vuelidate/core 2.0.3 and @vuelidate/validators 2.0.4).

Changes include:
- Replace imports from 'vuelidate/lib/validators' with
'@vuelidate/validators'
- Convert static 'validations:' objects to 'validations()' methods
which return the validation rules object
- Update helpers.regex() syntax from v1 two-arg format
helpers.regex('name', pattern) to v2 single-arg
helpers.regex(pattern)
- Create custom macAddress validator using regex since macAddress
is not included in @vuelidate/validators v2
- Remove deprecated vuelidate 0.7.7 package from dependencies
- Add unit tests for Vuelidate v2 migration verification
- Fix DateTime store to continue with DateTime update even if NTP
settings update fails
- Fix Network Table components (IPv4, IPv6, DNS) missing @ok event
handlers for Add modal dialogs
- Fix CSR country dropdown by restoring COUNTRY_LIST data and
moving useI18n() call to setup() function
- Fix disconnected modals in Network page by using eventBus to
communicate between child components and parent (hostname,
MAC address, default gateway edit buttons)

Tested:
- npm run build completes successfully
- npm run test:unit passes 66 new Vuelidate validation tests:
- VuelidateMixin.spec.js: getValidationState method tests
- TableDateFilter.spec.js: Date range validation tests
- ModalHostname.spec.js: Hostname validation tests
- ModalMacAddress.spec.js: MAC address validation tests
- ModalUser.spec.js: User form validation tests
- Manual testing performed:
- User Management: Create/edit user with password confirmation
- LDAP: Enable/disable with conditional field requirements
- Date/Time: Switch between NTP and manual modes
- Factory Reset: Confirm checkbox validation when server is on
- Network Settings: Add IPv4, IPv6, DNS addresses via modals
- Network Settings: Edit hostname, MAC address, default gateway
- Certificates: Generate CSR with country dropdown working

Change-Id: I0f6b5d89d1791b36977f1a3c16cbd10bca6a484a
Signed-off-by: Jason Westover <jwestover@nvidia.com>

show more ...

28ec9c6506-Jan-2026 Troy Lee <troy_lee@aspeedtech.com>

VirtualMedia: fix incorrect NBD export size encoding

The NBD export size is encoded as a 64-bit value (MSB/LSB) in
NBDServer.js. The previous implementation relied on JavaScript bitwise
operations (

VirtualMedia: fix incorrect NBD export size encoding

The NBD export size is encoded as a 64-bit value (MSB/LSB) in
NBDServer.js. The previous implementation relied on JavaScript bitwise
operations (e.g. size >>> 32), which is incorrect because all bitwise
operators coerce values to 32-bit integers.

This resulted in an incorrect export size for large files, causing the
kernel to detect an invalidly large NBD device and leading nbd_client to
fail with:
"Exported device is too big for me. Get 64-bit machine :-("

Fix the MSB calculation by using arithmetic division instead of bitwise
shifts so the exported size is encoded correctly.

Fixes: d36ac8a8be86 ("Migrate to Bootstrap 5 and remove Vue compat
plugin")

Tested: VirtualMedia on evb-ast2600.

Change-Id: I18d8cdd05cf149907d31d79cfd5308c0943ef83e
Signed-off-by: Troy Lee <troy_lee@aspeedtech.com>
Signed-off-by: Vince Chang <vince_chang@aspeedtech.com>

show more ...

60d5c9eb12-Dec-2025 Jason Westover <jwestover@nvidia.com>

Fix Vue 3 @change event bindings for forms

In Bootstrap-Vue-Next (Vue 3), the @change event on BFormCheckbox
and BFormRadio passes an Event object instead of the boolean value.
This caused malformed

Fix Vue 3 @change event bindings for forms

In Bootstrap-Vue-Next (Vue 3), the @change event on BFormCheckbox
and BFormRadio passes an Event object instead of the boolean value.
This caused malformed API payloads like:

{"LocationIndicatorActive":
{"isTrusted": true, "_vts": 1765562875420}}

instead of:

{"LocationIndicatorActive": true}

Replace @change with @update:model-value which correctly passes the
new value in Vue 3/Bootstrap-Vue-Next.

Components fixed:
- OverviewInventory.vue: LED toggle
- InventoryServiceIndicator.vue: LED toggle
- InventoryTableSystem.vue: LED toggle
- NetworkGlobalSettings.vue: 6 network switches
- Policies.vue: 4 policy switches (SSH, IPMI, vTPM, RTAD)
- TableIpv4.vue: DHCP switch
- TableIpv6.vue: DHCPv6 switch
- Ldap.vue: LDAP auth and service type controls

Also adds safety net in api.js:
- Request interceptor to strip Vue reactivity from payloads
- Detects and warns about Event objects in API payloads
- Improved response error handling with null safety
- Conditional debug logging (development mode only)

Change-Id: I180d9143087284e28c5066a6ffc141cd7f7038c6
Signed-off-by: jason westover <jwestover@nvidia.com>

show more ...

741a3f3011-Dec-2025 Jason Westover <jwestover@nvidia.com>

Fix Vue 3 v-model and form event handling

Add proper Vue 3 v-model support to components that are used with
v-model bindings from parent components:

- FormFile: Add modelValue prop with computed ge

Fix Vue 3 v-model and form event handling

Add proper Vue 3 v-model support to components that are used with
v-model bindings from parent components:

- FormFile: Add modelValue prop with computed getter/setter, emit both
update:modelValue and input events for backward compatibility,
maintain internal state when parent uses @input instead of v-model

- Modal components: Add modelValue prop and isModalVisible computed
property for proper two-way binding with bootstrap-vue-next

Fix form validation event handling by changing @input to @change for
select, radio, and checkbox elements. In Vue 3 with bootstrap-vue-next,
these elements do not fire @input correctly on first selection.

Components updated:
- FormFile.vue
- ModalConfigureConnection.vue
- ModalAddDestination.vue
- ModalUser.vue
- ModalSettings.vue
- ModalAddRoleGroup.vue
- FirmwareModalUpdateFirmware.vue
- FactoryResetModal.vue
- ModalGenerateCsr.vue
- ModalUploadCertificate.vue
- DumpsModalConfirmation.vue

Change-Id: Ib7376fdff8e9ab5e764f5fae80ac05a761b70312
Signed-off-by: Jason Westover <jwestover@nvidia.com>

show more ...

280b920e31-Oct-2025 tiwari-nishant <tiwari.nishant@ibm.com>

Fixed Loading bar overriding the App Header

- Made the position of loading bar relative to top header

- Loading bar now appears below the App header

Change-Id: I1b0ecca593a039c8354160b505e6aa299c4

Fixed Loading bar overriding the App Header

- Made the position of loading bar relative to top header

- Loading bar now appears below the App header

Change-Id: I1b0ecca593a039c8354160b505e6aa299c40e6f9
Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>

show more ...

61bab8aa20-Nov-2025 Hariharan Rangasamy <hariharanr@ami.com>

Prevent error when EfficiencyRatings is undefined

Use optional chaining on the element access
and on the property access to prevent TypeError

Fixes: https://github.com/openbmc/webui-vue/issues/135

Prevent error when EfficiencyRatings is undefined

Use optional chaining on the element access
and on the property access to prevent TypeError

Fixes: https://github.com/openbmc/webui-vue/issues/135

Change-Id: Ic58d4ef086e5d0a43a44b6388b3d1d450c79d224
Signed-off-by: Hariharan Rangasamy <hariharanr@ami.com>

show more ...

7a2b464a19-Nov-2025 Jae Hyun Yoo <jae.yoo@oss.qualcomm.com>

Add forceUpdate option for uploadFirmwareMultipartHttpPush

Add the forceUpdate option for the uploadFirmwareMultipartHttpPush call
so that ForceUpdate can be set through it.

Change-Id: I4d1f326963e

Add forceUpdate option for uploadFirmwareMultipartHttpPush

Add the forceUpdate option for the uploadFirmwareMultipartHttpPush call
so that ForceUpdate can be set through it.

Change-Id: I4d1f326963e87f024037001c964ab72c90ccb8e1
Signed-off-by: Jae Hyun Yoo <jae.yoo@oss.qualcomm.com>

show more ...

cfbd678d28-Apr-2025 Jae Hyun Yoo <jae.yoo@oss.qualcomm.com>

Add applyTime option for uploadFirmwareMultipartHttpPush

Add the applyTime option for the uploadFirmwareMultipartHttpPush call
and set its default value to ‘Immediate’.

Change-Id: I7e9a442ef0bd4487

Add applyTime option for uploadFirmwareMultipartHttpPush

Add the applyTime option for the uploadFirmwareMultipartHttpPush call
and set its default value to ‘Immediate’.

Change-Id: I7e9a442ef0bd4487b67b921761b51b603a77d9ed
Signed-off-by: Jae Hyun Yoo <jae.yoo@oss.qualcomm.com>

show more ...

75a0fc1919-Nov-2025 Thu Nguyen <thu@os.amperecomputing.com>

SOL: change `scrollback` default to 10000

The Host boot log usually has more than 1000 lines. Apply the default
value 1000 for `scrollback` of xterm can cause missing the console
messages. Change th

SOL: change `scrollback` default to 10000

The Host boot log usually has more than 1000 lines. Apply the default
value 1000 for `scrollback` of xterm can cause missing the console
messages. Change the `scrollback` of SOL to 10000.

Tested:
1. Reboot the host while opening the SOL in WebUI
2. The maximum of the number of the scroll back messages in SOL should
be 10000.

Change-Id: I96b8e41bb18f2f9eaaf1b977dea1fb03370eda46
Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>

show more ...

757550f919-Nov-2025 Hariharan Rangasamy <hariharanr@ami.com>

Fix typo in CSR form validation

correct typo in ModalGenerateCsr.vue to restore
keyCurveId/keyBitLength requiredIf rules

Change-Id: Ied25a53c7b188956925f22fea90f47708055333f
Signed-off-by: Harihara

Fix typo in CSR form validation

correct typo in ModalGenerateCsr.vue to restore
keyCurveId/keyBitLength requiredIf rules

Change-Id: Ied25a53c7b188956925f22fea90f47708055333f
Signed-off-by: Hariharan Rangasamy <hariharanr@ami.com>

show more ...

d36ac8a803-Nov-2025 jason westover <jwestover@nvidia.com>

Migrate to Bootstrap 5 and remove Vue compat plugin

Complete migration from Bootstrap 4 (bootstrap-vue) to Bootstrap 5
(bootstrap-vue-next) and remove the @vue/compat plugin to finalize
the Vue 3 mi

Migrate to Bootstrap 5 and remove Vue compat plugin

Complete migration from Bootstrap 4 (bootstrap-vue) to Bootstrap 5
(bootstrap-vue-next) and remove the @vue/compat plugin to finalize
the Vue 3 migration.

Bundle size impact:
- Before (Bootstrap 4 + bootstrap-vue): 535 KiB gzipped
- After (Bootstrap 5 + bootstrap-vue-next): 511 KiB gzipped
- Reduction: 24 KiB (4.5% smaller)

Package updates:
- Update bootstrap 4.6.2 -> 5.3.8
- Update bootstrap-vue 2.23.1 -> bootstrap-vue-next 0.40.8
- Remove @vue/compat plugin
- Update vue 3.4.29 -> 3.5.24 and related packages
- Add mitt 3.0.1 for global event bus
- Add vue-demi 0.14.10 for library compatibility

Bootstrap 5 CSS updates:
- Replace directional classes: ml/mr/pl/pr -> ms/me/ps/pe
- Replace text-left/right -> text-start/end
- Replace sr-only -> visually-hidden / visually-hidden-focusable
- Update media breakpoint xs -> sm (Bootstrap 5 removed xs)
- Update color functions: gray("700") -> $gray-700
- Add form-switch border-radius for curved toggles
- Update alert, table, toast, form, and button styles

Bootstrap-Vue-Next API changes:
- Use createBootstrap() for plugin registration
- Update modal footer slots: #modal-footer -> #footer
- Fix form select events: @change -> @update:model-value
- Add v-model bindings to modals instead of manual show()/hide()
- Update toast system with custom plugin wrapping useToast()
- Register components and directives explicitly

Vue 3 specific updates:
- Replace $root.$emit with mitt event bus (eventBus.js)
- Update render function from h(App) to createApp(App)
- Add emits option to components
- Use h() instead of $createElement in mixins
- Add Vue 3 compile-time feature flags with documentation
- Update event listeners: $on/$off to eventBus methods
- Add beforeUnmount cleanup for event listeners

New components and significant additions:
- src/plugins/toast.js - Custom toast plugin wrapping useToast() for
Options API compatibility
- src/components/Global/ConfirmModal.vue - Global confirmation dialog
shim to replace Bootstrap 4's removed bvModal.msgBoxConfirm
- src/eventBus.js - mitt-based event bus with Vue 2-compatible API
- Navigation state preservation on page refresh implemented

Critical fixes:
- Add global API interceptor to strip Vue reactivity from payloads
- Preserve binary data (File, Blob, FormData) in API requests
- Fix Generate CSR modal v-model binding for proper open/close
- Remove debug logging and fix jest configuration
- Fix responsive text visibility in AppHeader
- Update BVTableSelectableMixin for proper row selection
- Fix BVToastMixin VNode rendering for Vue 3

Vue 3 modal fixes (lazy-loaded components):
- Add v-model support to network modals (ModalIpv4, ModalIpv6, ModalDns,
ModalHostname, ModalMacAddress, ModalDefaultGateway) by adding
modelValue prop, watcher on modelValue that triggers show(), and
update:modelValue emit in resetForm
- Remove lazy loading from TableIpv4, TableIpv6, TableDns to ensure
modal component refs are available when v-model triggers
- Fix modal title accessibility by adding title prop to modals
(ModalAddDestination, ModalUser, ModalAddRoleGroup, etc.)

i18n fixes (computed properties):
- Fix computed properties using i18n translations in ModalAddRoleGroup,
ModalUser, and ModalUploadCertificate
- Move useI18n() call from data() to setup() and return i18n object
- Use i18n.t() instead of $t in computed properties and templates
- Prevents "this.$t is not a function" and "_ctx.$t is not a function"
errors in Vue 3

Toast notification fixes:
- Fix toast progress bar visibility by setting progressProps to
undefined (documented way to opt-out) instead of false
- Change modelValue prop to interval for auto-dismiss timing
- Remove temporary CSS display:none hack from _toasts.scss

Network settings fixes:
- Fix checkbox @change event sending Vue reactive proxy object instead
of boolean by casting with !! operator in changeDomainNameState and
related methods in NetworkGlobalSettings.vue
- Ensures API receives plain boolean values in PATCH requests

Navigation fixes:
- Fix nav-link styling for navigation items without children by
replacing b-nav-item with router-link in AppNavigation.vue
- Prevents blue font color from .nav-link CSS class

Configuration updates:
- Remove vue-compat webpack configuration
- Add Vue 3 feature flags (__VUE_OPTIONS_API__, etc.)
- Add .cursor to .gitignore

Accessibility improvements:
- Add autocomplete attributes to password and credential inputs
- Add modal title props for screen reader support

Build completes successfully and UI behavior matches pre-migration.

Extracted features (to be submitted in follow-up PRs):
The following features were removed from this migration PR to keep it
focused on the Bootstrap 5 upgrade. They will be submitted separately:
1. UnresponsiveModal - Server connectivity watchdog with auto-retry
2. Auth token persistence - sessionStorage support for X-Auth-Token
3. Hardware store error handling - try/catch, dynamic discovery
4. Login page connecting indicator - Backend polling with spinner
5. Test updates - Jest setup and snapshot updates for
Bootstrap-Vue-Next
6. Documentation updates - Vue 3 and Vue I18n v9+ API documentation
7. Enhanced ConfirmModal - Feature-rich confirmation dialog with
custom actions

Change-Id: Ib76a58f324b3c926cf536e6e4626e4271639de38
Signed-off-by: Jason Westover <jwestover@nvidia.com>

show more ...


/openbmc/webui-vue/.gitignore
/openbmc/webui-vue/package-lock.json
/openbmc/webui-vue/package.json
/openbmc/webui-vue/public/index.html
App.vue
assets/styles/_obmc-custom.scss
assets/styles/bmc/custom/_alert.scss
assets/styles/bmc/custom/_badge.scss
assets/styles/bmc/custom/_base.scss
assets/styles/bmc/custom/_bootstrap-grid.scss
assets/styles/bmc/custom/_buttons.scss
assets/styles/bmc/custom/_dropdown.scss
assets/styles/bmc/custom/_forms.scss
assets/styles/bmc/custom/_modal.scss
assets/styles/bmc/custom/_pagination.scss
assets/styles/bmc/custom/_section-divider.scss
assets/styles/bmc/custom/_tables.scss
assets/styles/bmc/custom/_toasts.scss
assets/styles/bmc/helpers/_colors.scss
assets/styles/bmc/helpers/_functions.scss
assets/styles/bootstrap/_index.scss
components/AppHeader/AppHeader.vue
components/AppNavigation/AppNavigation.vue
components/Global/Alert.vue
components/Global/ButtonBackToTop.vue
components/Global/ConfirmModal.vue
components/Global/FormFile.vue
components/Global/InfoTooltip.vue
components/Global/InputPasswordToggle.vue
components/Global/LoadingBar.vue
components/Global/PageContainer.vue
components/Global/Search.vue
components/Global/StatusIcon.vue
components/Global/TableDateFilter.vue
components/Global/TableFilter.vue
components/Global/TableRowAction.vue
components/Global/TableToolbar.vue
components/Mixins/BVPaginationMixin.js
components/Mixins/BVTableSelectableMixin.js
components/Mixins/BVToastMixin.js
components/Mixins/LoadingBarMixin.js
components/Mixins/TableRowExpandMixin.js
components/Mixins/VuelidateMixin.js
eventBus.js
layouts/AppLayout.vue
layouts/LoginLayout.vue
locales/en-US.json
locales/ka-GE.json
locales/ru-RU.json
main.js
plugins/toast.js
store/index.js
store/modules/GlobalStore.js
store/modules/Operations/BootSettingsStore.js
store/modules/ResourceManagement/PowerControlStore.js
store/modules/SecurityAndAccess/LdapStore.js
store/modules/Settings/NetworkStore.js
utilities/NBDServer.js
views/ChangePassword/ChangePassword.vue
views/HardwareStatus/Inventory/Inventory.vue
views/HardwareStatus/Inventory/InventoryServiceIndicator.vue
views/HardwareStatus/Inventory/InventoryTableAssembly.vue
views/HardwareStatus/Inventory/InventoryTableBmcManager.vue
views/HardwareStatus/Inventory/InventoryTableChassis.vue
views/HardwareStatus/Inventory/InventoryTableDimmSlot.vue
views/HardwareStatus/Inventory/InventoryTableFans.vue
views/HardwareStatus/Inventory/InventoryTablePowerSupplies.vue
views/HardwareStatus/Inventory/InventoryTableProcessors.vue
views/HardwareStatus/Inventory/InventoryTableSystem.vue
views/HardwareStatus/Sensors/Sensors.vue
views/Login/Login.vue
views/Logs/Dumps/Dumps.vue
views/Logs/Dumps/DumpsForm.vue
views/Logs/Dumps/DumpsModalConfirmation.vue
views/Logs/EventLogs/EventLogs.vue
views/Logs/PostCodeLogs/PostCodeLogs.vue
views/Operations/FactoryReset/FactoryReset.vue
views/Operations/FactoryReset/FactoryResetModal.vue
views/Operations/Firmware/FirmwareCardsBios.vue
views/Operations/Firmware/FirmwareCardsBmc.vue
views/Operations/Firmware/FirmwareFormUpdate.vue
views/Operations/KeyClear/KeyClear.vue
views/Operations/Kvm/KvmConsole.vue
views/Operations/RebootBmc/RebootBmc.vue
views/Operations/SerialOverLan/SerialOverLanConsole.vue
views/Operations/ServerPowerOperations/BootSettings.vue
views/Operations/ServerPowerOperations/ServerPowerOperations.vue
views/Operations/VirtualMedia/ModalConfigureConnection.vue
views/Operations/VirtualMedia/VirtualMedia.vue
views/Overview/Overview.vue
views/Overview/OverviewCard.vue
views/Overview/OverviewDumps.vue
views/Overview/OverviewEvents.vue
views/Overview/OverviewFirmware.vue
views/Overview/OverviewInventory.vue
views/Overview/OverviewNetwork.vue
views/Overview/OverviewPower.vue
views/Overview/OverviewQuickLinks.vue
views/Overview/OverviewServer.vue
views/ProfileSettings/ProfileSettings.vue
views/ResourceManagement/Power.vue
views/SecurityAndAccess/Certificates/Certificates.vue
views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue
views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue
views/SecurityAndAccess/Ldap/Ldap.vue
views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue
views/SecurityAndAccess/Ldap/TableRoleGroups.vue
views/SecurityAndAccess/Policies/Policies.vue
views/SecurityAndAccess/Sessions/Sessions.vue
views/SecurityAndAccess/UserManagement/ModalSettings.vue
views/SecurityAndAccess/UserManagement/ModalUser.vue
views/SecurityAndAccess/UserManagement/TableRoles.vue
views/SecurityAndAccess/UserManagement/UserManagement.vue
views/Settings/DateTime/DateTime.vue
views/Settings/Network/ModalDefaultGateway.vue
views/Settings/Network/ModalDns.vue
views/Settings/Network/ModalHostname.vue
views/Settings/Network/ModalIpv4.vue
views/Settings/Network/ModalIpv6.vue
views/Settings/Network/ModalMacAddress.vue
views/Settings/Network/Network.vue
views/Settings/Network/NetworkGlobalSettings.vue
views/Settings/Network/NetworkInterfaceSettings.vue
views/Settings/Network/TableDns.vue
views/Settings/Network/TableIpv4.vue
views/Settings/Network/TableIpv6.vue
views/Settings/SnmpAlerts/ModalAddDestination.vue
views/Settings/SnmpAlerts/SnmpAlerts.vue
/openbmc/webui-vue/vue.config.js
c5d60f5231-Oct-2025 Hariharan Rangasamy <hariharanr@ami.com>

Fixed linter warning messages

Warnings:
src/components/AppHeader/AppHeader.vue
235:18 warning The "refresh" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

Fixed linter warning messages

Warnings:
src/components/AppHeader/AppHeader.vue
235:18 warning The "refresh" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/components/Global/FormFile.vue
11:23 warning The "input" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/components/Global/Search.vue
64:18 warning The "change-search" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
68:18 warning The "clear-search" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/components/Global/TableDateFilter.vue
165:18 warning The "change" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/components/Global/TableFilter.vue
107:18 warning The "filter-change" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/components/Global/TableRowAction.vue
47:21 warning The "click-table-action" event has been triggered but
not declared on `emits` option vue/require-explicit-emits

src/components/Global/TableToolbar.vue
16:27 warning The "batch-action" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
23:27 warning The "clear-selected" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Logs/Dumps/DumpsModalConfirmation.vue
85:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Operations/FactoryReset/FactoryResetModal.vue
122:18 warning The "okConfirm" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Operations/Firmware/FirmwareFormUpdate.vue
6:9 warning `<template>` require directive vue/no-lone-template

src/views/Operations/Firmware/FirmwareModalSwitchToRunning.vue
7:16 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Operations/Firmware/FirmwareModalUpdateFirmware.vue
7:16 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Operations/VirtualMedia/ModalConfigureConnection.vue
127:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue
147:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue
147:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
163:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/SecurityAndAccess/UserManagement/ModalSettings.vue
200:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/SecurityAndAccess/UserManagement/ModalUser.vue
370:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
386:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/DateTime/DateTime.vue
328:18 warning The "change" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalDefaultGateway.vue
103:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
114:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalDns.vue
81:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
92:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalHostname.vue
99:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
110:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalIpv4.vue
148:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
165:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalIpv6.vue
120:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
135:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/Network/ModalMacAddress.vue
98:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
109:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

src/views/Settings/SnmpAlerts/ModalAddDestination.vue
124:18 warning The "ok" event has been triggered but not
declared on `emits` option vue/require-explicit-emits
139:18 warning The "hidden" event has been triggered but not
declared on `emits` option vue/require-explicit-emits

Change-Id: I66fb82679cc12003ad435c5c73bb67c2d70b3658
Signed-off-by: Hariharan Rangasamy <hariharanr@ami.com>

show more ...

e142003201-Sep-2025 tiwari-nishant <tiwari.nishant0077@gmail.com>

Dumps Validation Fix

- Fixed Vuelidate returning validations always as false

- Activated Dumps Modal Validations only when its open

Change-Id: I87e61f3033f6e4f7ab0cd19859638d686bdc9775
Signed-off-

Dumps Validation Fix

- Fixed Vuelidate returning validations always as false

- Activated Dumps Modal Validations only when its open

Change-Id: I87e61f3033f6e4f7ab0cd19859638d686bdc9775
Signed-off-by: Nishant Tiwari <tiwari.nishant@ibm.com>

show more ...

99fe228e20-Aug-2025 Aravinth S <aravinths@ami.com>

Add privilege check to power operation button

Disables power operation buttons for users with
"Read-only" privileges. This change ensures that only "Operator" and
administrative users can perform po

Add privilege check to power operation button

Disables power operation buttons for users with
"Read-only" privileges. This change ensures that only "Operator" and
administrative users can perform power operations, preventing
unauthorized actions and enhancing system security.

Change-Id: I515ede092cef3c82a110d9534d9f8d3d6afc3135
Signed-off-by: Aravinth S <aravinths@ami.com>

show more ...

d248362218-Aug-2025 jason westover <jwestover@nvidia.com>

Add i18n vendor overlays and dynamic bundling

- Add opt-in vendor overlays under src/env/locales/<env>
(and optional variant), merged on top of base locales at runtime.
- Auto-discover and bundle

Add i18n vendor overlays and dynamic bundling

- Add opt-in vendor overlays under src/env/locales/<env>
(and optional variant), merged on top of base locales at runtime.
- Auto-discover and bundle all base locale JSON files
in src/locales/.
- Example: move dump type labels under pageDumps.dumpTypes;
read vendor-only dump labels from overlays.
- Docs: update i18n guidelines and env README (formatting fixes).
- Tests: add focused unit tests for overlays and locale aliases.

Tested:
- Unit: i18n.locale-alias.spec.js, i18n.vendor.spec.js (passing)
- Manual: Verified dynamic locale discovery and overlay merge in UI

Change-Id: I8eae2bfec0e9622bafdafac3168dbf96650e8ae8
Signed-off-by: jason westover <jwestover@nvidia.com>

show more ...

0c7f684905-Aug-2025 aravinths1 <aravinths@ami.com>

Remove NoAccess references from privilege roles

The NoAccess privilege is not supported according to the Redfish
schema, yet residual UI privilege role definitions still referenced it.
This commit c

Remove NoAccess references from privilege roles

The NoAccess privilege is not supported according to the Redfish
schema, yet residual UI privilege role definitions still referenced it.
This commit cleans up remaining code fragments that displayed
NoAccess-related descriptions in the web UI.

Resolves discrepancies between schema and UI by aligning privilege
role displays with Redfish standards, reducing user confusion.

Change-Id: I1f21630019407e9b2bf223d2336bc110a6bfafab
Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>

show more ...

7d65f08b07-May-2024 Nikhil Ashoka <a.nikhil@ibm.com>

Improved performance in Sensors page

- The Sensors page takes too long to load, It is because we are
trying to call the redfish endpoint: /Sensors' Members one by one
and setting in the GUI. The

Improved performance in Sensors page

- The Sensors page takes too long to load, It is because we are
trying to call the redfish endpoint: /Sensors' Members one by one
and setting in the GUI. The change made is that we are using the
query parameters' expand option to call only once and get all
the required responses.

- We are using query parameters only for those which have MaxLevels>0,
else calling the APIs one by one.

- Tested: Checked on a p10 system. For 306 records, it used to take
1 minute 20 seconds, now takes 7 seconds to load.

Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: Ife3447e48d4f5617dcf4563ceac486e4502b2de1

show more ...

7fb9bb4f24-Apr-2025 Vladimir Novikov <MeVladimirNovikov@gmail.com>

Fix password confirmation validation

@vuelidate/validators ^2.0.0 does not support literal strings as
references for sameAs. They instead treated as literal strings and it
means that the password co

Fix password confirmation validation

@vuelidate/validators ^2.0.0 does not support literal strings as
references for sameAs. They instead treated as literal strings and it
means that the password confirmation must exactly match the passed
string which is obviously incorrect.

This essentially is just a correction of some artifacts caused by the
upgrade to Vue 3.

Change-Id: I41f6a1764c2dd3fcfbfd96d2da9b48e6e409fef0
Signed-off-by: Vladimir Novikov <MeVladimirNovikov@gmail.com>

show more ...

6ce5d84530-Apr-2025 Jason M. Bills <jason.m.bills@intel.com>

i18n: clean up invalid i18n.t comment

The i18n.t method changed to i18n.global.t for vue3 support, so this
comment is no longer valid.

I found this on the Intel router and am pushing this for compl

i18n: clean up invalid i18n.t comment

The i18n.t method changed to i18n.global.t for vue3 support, so this
comment is no longer valid.

I found this on the Intel router and am pushing this for completeness,
but I didn't test this environment.

Tested:
Did not test

Change-Id: Ieba177977583bf05f6444466a630f4e6f83af91f
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>

show more ...

0d7909b405-May-2025 Jason M. Bills <jason.m.bills@intel.com>

LoginLayout: Fix logo-bmc size override

The size override to a height of 60 is not working in my environment.
This updates to override style instead.

Change-Id: I7df8f724f822f60bf555a8ec8fd9e0bf997

LoginLayout: Fix logo-bmc size override

The size override to a height of 60 is not working in my environment.
This updates to override style instead.

Change-Id: I7df8f724f822f60bf555a8ec8fd9e0bf9979dbd5
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>

show more ...

83c891d330-Apr-2025 Jason M. Bills <jason.m.bills@intel.com>

i18n: fix global method in ibm router

The change from i18n.t method to i18n.global.t for vue3 support was
missed in the IBM router. I found this on the Intel router and am
pushing this for completen

i18n: fix global method in ibm router

The change from i18n.t method to i18n.global.t for vue3 support was
missed in the IBM router. I found this on the Intel router and am
pushing this for completeness, but I didn't test this environment.

Tested:
Did not test

Change-Id: Iee1f32a82b2a2bf9e30362572486a7c109586fea
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>

show more ...

142fe91830-Apr-2025 Jason M. Bills <jason.m.bills@intel.com>

i18n: fix global method in intel router

The change from i18n.t method to i18n.global.t for vue3 support was
missed in the Intel router and caused the pages to fail to load.

Tested:
Confirmed that p

i18n: fix global method in intel router

The change from i18n.t method to i18n.global.t for vue3 support was
missed in the Intel router and caused the pages to fail to load.

Tested:
Confirmed that pages all load correctly.

Change-Id: I9d922f0f4d5016b8a12fd48a97192a95aa646472
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>

show more ...

b05410f029-Jan-2025 suryav9724 <suryav@ami.com>

fix: Update date formatting to use formatTime

Show the Time and Timezone in the overview page instead of showing date
twice. Format the date using the formatTime filters to display the
proper date a

fix: Update date formatting to use formatTime

Show the Time and Timezone in the overview page instead of showing date
twice. Format the date using the formatTime filters to display the
proper date and time in the overview page.

Before it shows date twice, In the place of time it shows date.

Change-Id: Ibd8211530750091c03f788106bfb78097be2b2d8
Signed-off-by: Surya Venkatesan <suryav@ami.com>

show more ...

12345678910>>...29