Setup UX: SMBIOS system rail + HII breadcrumb, Quick Settings, Russian language#44
Open
MarsDoge wants to merge 5 commits into
Open
Setup UX: SMBIOS system rail + HII breadcrumb, Quick Settings, Russian language#44MarsDoge wants to merge 5 commits into
MarsDoge wants to merge 5 commits into
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
carried no info and rendered clipped).
looked clickable but did no navigation — FormBrowser owns Esc/arrows) is
replaced by a
<category> > <form title>breadcrumb. The classifier coversNetwork/PCI/USB/Storage/Memory/etc., and the accent underline tracks the
text. The native front page keeps its menu tabs.
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 physicalplatform supplies live readings). QEMU shows what its SMBIOS provides; a real
board shows its written identity.
App
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
(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
SMBIOS data (commit "real SMBIOS system rail…") — net result is a useful,
real rail, not the old fake panel.
ModernUiPlatformTablesLibmoves fromapp_library_blockto
library_blockso the display-engine-only path links it (no duplicate inreplace-UiApp builds).
Validation
python3 Tests/Smoke/smoke_validate.py— PASS (incl. built-in glyph coverage).breadcrumb on network/device forms, Russian UI (no missing-glyph boxes).
🤖 Generated with Claude Code