Skip to content

Setup UX: SMBIOS system rail + HII breadcrumb, Quick Settings, Russian language#44

Open
MarsDoge wants to merge 5 commits into
mainfrom
feat/hii-rail-breadcrumb-russian
Open

Setup UX: SMBIOS system rail + HII breadcrumb, Quick Settings, Russian language#44
MarsDoge wants to merge 5 commits into
mainfrom
feat/hii-rail-breadcrumb-russian

Conversation

@MarsDoge

Copy link
Copy Markdown
Owner

Accumulated ModernSetupApp / DisplayEngine UX work since v1.1.0. Display-only —
edk2 still owns HII/IFR/FormBrowser/ConfigAccess/variable writes.

What's in here

Native HII forms (rendered by ModernDisplayEngine)

  • Decluttered: dropped the permanent "LIVE VIEW" footer status stub (it
    carried no info and rendered clipped).
  • Honest breadcrumb title bar: the decorative 5-category tab strip (which
    looked clickable but did no navigation — FormBrowser owns Esc/arrows) is
    replaced by a <category> > <form title> breadcrumb. The classifier covers
    Network/PCI/USB/Storage/Memory/etc., and the accent underline tracks the
    text. The native front page keeps its menu tabs.
  • Real system rail: the right rail no longer shows a static placeholder
    telemetry panel. It now sources SYSTEM (SMBIOS Type 1), PROCESSOR (arch +
    Type 4 model) and MEMORY (Type 17 type/speed) from the shared
    ModernUiPlatformTablesLib, with an honest SENSORS slot (N/A until a physical
    platform supplies live readings). QEMU shows what its SMBIOS provides; a real
    board shows its written identity.

App

  • Quick Settings page: read-only, grouped overview of high-churn
    policy-entry hints (VT-d/IOMMU, SR-IOV, ACS/ARI, Above-4G, ReBAR, ASPM,
    hot-plug, RAS, Secure Boot, TPM) the providers already discover. Editing
    stays in native FormBrowser (per-row SendForm deep-link is a follow-up).

i18n

  • Russian (ru) UI language: language selector is now three-way
    (Chinese / English / Russian). Cyrillic glyph subset baked from Noto Sans CJK
    SC (SIL OFL 1.1) into the shared built-in glyph table, baseline-aligned with
    per-glyph proportional advance (anti-aliased, tightly spaced). Translations
    are a best-effort technical pass pending native review.

Notes

  • The rail was first removed (commit "declutter…") then rebuilt with real
    SMBIOS data (commit "real SMBIOS system rail…") — net result is a useful,
    real rail, not the old fake panel.
  • Build-script change: ModernUiPlatformTablesLib moves from app_library_block
    to library_block so the display-engine-only path links it (no duplicate in
    replace-UiApp builds).

Validation

  • python3 Tests/Smoke/smoke_validate.py — PASS (incl. built-in glyph coverage).
  • Clean OVMF x64 builds; QEMU captures of: SMBIOS rail (real CPU/system/memory),
    breadcrumb on network/device forms, Russian UI (no missing-glyph boxes).
  • LoongArch lvgl FDs built + smoke for the i18n/rail path.

🤖 Generated with Claude Code

MarsDoge and others added 5 commits June 22, 2026 10:05
…rview)

Tier-B prototype per Docs/ConfigurableItemsAndQuickSettings.md. A new
PageQuickSettings tab curates the high-churn policy-entry presence hints the
providers already discover (VT-d/IOMMU, SR-IOV, ACS/ARI, CPU virtualization,
Secure Boot, TPM, Above-4G, ReBAR, ASPM, hot-plug, RAS, PCIe config) into one
grouped, read-only screen, so a user can see at a glance which settings this
platform exposes. Editing stays in native FormBrowser (per-row SendForm
deep-link is a follow-up slice); this page writes nothing.

Wires the new page through the SETUP_PAGE enum, the tab list + compact labels,
the page dispatch, and appends ModernUiStringPageQuickSettings(+Hint) at the
string-array tail (indices stay stable). zh title uses glyph-safe wording
("平台设置" / "本平台可见的设置项") to satisfy the embedded-glyph smoke guard.
Verified under QEMU OVMF x64.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… LIVE VIEW)

Entering a native FormBrowser form through ModernDisplayEngine looked crude:
a static decorative telemetry rail (CPU/Architecture/Memory/Voltage, no live
data) occupied the right of every form, and a permanent "LIVE VIEW" status pill
rendered as a clipped stub in the thin form footer.

- ModernDisplayCalculateLayout: force RightRailVisible = FALSE so the form
  reclaims the full content width; the telemetry rail (ModernUiEngineLib's
  DrawRightRail) is no longer requested (PageModel.DrawRightRail = FALSE).
  Removed the now-unused ModernDisplayDrawRightRailDivider.
- ModernDisplayPageStatusText: the ordinary "live" state returns NULL (no pill)
  instead of "LIVE VIEW"; only unsaved/reboot/modal/live-refresh surface a pill.

The front-page App is unaffected (it uses its own chrome and never set
DrawRightRail). Display-only; no HII/IFR/ConfigAccess/varstore behavior changes.
Verified under QEMU OVMF x64 (modern engine): the form right side is clean and
the footer no longer shows the clipped LIVE VIEW stub. Smoke updated to drop the
retired divider token.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the decorative five-category tab strip on native FormBrowser forms with
a "<category> > <form title>" breadcrumb. The tabs (设置分类/设备/启动/安全/退出)
looked clickable but performed no navigation -- FormBrowser owns nav (Esc=back,
arrows=move) -- while the real form title was only a faint content-top sub-line.
The breadcrumb states where the operator is and makes the form identity the
prominent element.

ModernDisplayDrawPageChrome: for non-front-page forms set PageModel.TabCount = 0
(engine draws no fake tabs) and draw ModernDisplayDrawFormBreadcrumb in the
header tab band -- the reused chrome classifier supplies the category prefix
(only for the clearly classified Devices/Boot/Security/Exit buckets; an
unclassified form shows just its title). The native front page keeps its tab
strip and faint title. Presentation-only; no HII/IFR/ConfigAccess/varstore
changes. Verified under QEMU OVMF x64: top bar reads "设备 > Driver Health
Manager" with the title bright and an accent underline, no fake tabs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the native-HII chrome right rail's static placeholder telemetry with
real platform identity read through the shared ModernUiPlatformTablesLib:
SYSTEM (SMBIOS Type 1 manufacturer/product), PROCESSOR (compile-time arch +
Type 4 model) and MEMORY (Type 17 type/speed), plus an honest SENSORS slot
(N/A until a physical platform supplies live readings). Empty fields fall back
to architecture defaults, so QEMU shows what its SMBIOS provides and a real
board shows its written identity. This supersedes the earlier rail removal:
the rail returns because, with real data, it is useful context rather than the
fake panel it was.

ModernUiEngineLib gains the RailGet{SystemName,CpuModel,MemorySummary} helpers
and a ModernUiPlatformTablesLib dependency; the four overlay build scripts move
that lib from app_library_block to library_block so the display-engine-only
path resolves it without duplicating it in replace-UiApp builds.

Breadcrumb refinements (CategoryIndex classifier extended to Network/PCI/USB/
Storage/Memory/etc. so more device-class forms get a "<category> > <title>"
prefix; the accent underline now tracks the actual breadcrumb width).

Verified under QEMU OVMF x64 (modern engine): the rail shows real CPU model /
system / memory, the breadcrumb classifies network/device forms, smoke passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Make the language selector three-way (Chinese / English / Russian). Selecting
Русский switches the whole ModernSetupApp UI to Russian.

- ModernUiStringLib: add mRussianStrings (133 entries) + a Russian language
  name; GetString/NormalizeLanguage become three-way (ru -> ru-RU) with a new
  UseRussian() check.
- Selector wiring: MODERN_SETUP_LANGUAGE_OPTION_COUNT (=3) drives the dropdown
  cycle, draw loop and popup height; option-name / active-selection / apply map
  index 2 to Russian.
- Glyphs: bake the Cyrillic subset (plus em dash) used by the Russian strings
  from Noto Sans CJK SC (SIL OFL 1.1) and append to the shared built-in glyph
  table (linear lookup, so order-independent; zero churn to existing CJK).
  Cyrillic is baked baseline-aligned with per-glyph proportional advance so it
  renders anti-aliased and tightly spaced, not in fixed full-width cells.

Translations are a best-effort technical pass; wording should get a native
review. Verified under QEMU OVMF x64: switching to Русский renders the full UI
in Russian with no missing-glyph boxes; smoke (incl. built-in glyph coverage)
passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.

1 participant