Skip to content

phase36(display-engine): polish row UX and dynamic state boundary#32

Merged
MarsDoge merged 10 commits into
mainfrom
phase36/displayengine-row-visual-polish
May 23, 2026
Merged

phase36(display-engine): polish row UX and dynamic state boundary#32
MarsDoge merged 10 commits into
mainfrom
phase36/displayengine-row-visual-polish

Conversation

@MarsDoge
Copy link
Copy Markdown
Owner

@MarsDoge MarsDoge commented May 23, 2026

Summary

Phase36 expands the Modern DisplayEngine row-polish branch from the initial FormModel row accent slice into a coherent DisplayEngine UX/data-boundary batch.

This keeps edk2 FormBrowser as the owner of HII/IFR/ConfigAccess semantics and keeps Modern DisplayEngine focused on rendering already-materialized state.

UX / rendering

  • Adds FormModel-driven row accents for statement kind/state.
  • Adds text inset for native FormBrowser prompt/value glyphs inside modern rows.
  • Adds a subtle right-rail divider between actionable rows and contextual help.
  • Surfaces page state through footer status text/chips:
    • LIVE VIEW
    • LIVE REFRESH
    • UNSAVED CHANGES
    • REBOOT REQUIRED reserved state
    • MODAL VIEW
  • Adds a highlighted value lane to make prompt/value separation clearer.
  • Reserves footer hotkey text space for the status chip.
  • Shows seconds in header time so redraw/refresh activity has visible feedback.

Dynamic data / config boundary

  • Adds English + zh-CN docs for the intended PEI -> DXE services -> ModernSetupApp/DisplayEngine pipeline.
  • Documents that DisplayEngine may render live/refresh/unsaved/reboot-required affordances but must not own hardware probing, policy decisions, or storage writes.
  • Adds smoke coverage to guard against DisplayEngine renderer ownership of hardware/config mutation tokens.

Files

  • Library/ModernUiCustomizedDisplayLib/CustomizedDisplayLibInternal.c
  • Library/ModernUiEngineLib/ModernUiEngineLib.c
  • Docs/DisplayEngineDynamicDataFlow.md
  • Docs/DisplayEngineDynamicDataFlow.zh-CN.md
  • Tests/Smoke/smoke_validate.py
  • CHANGELOG.md

Validation

  • python3 Tests/Smoke/smoke_validate.py
  • git diff --check
  • TARGET=RELEASE MODERN_SETUP_DISPLAY_ENGINE=modern MODERN_SETUP_REPLACE_UIAPP=1 Scripts/build-ovmf-x64.sh
  • Scripts/xarch-validate.sh --all --mode dry-run
  • DisplayEngine OVMF X64 capture sanity

Capture evidence root:

/tmp/modernsetup-phase36-batch-capture-20260523205754

Captured images:

/tmp/modernsetup-phase36-batch-capture-20260523205754/native/displayengine-ovmf-x64-native.png
/tmp/modernsetup-phase36-batch-capture-20260523205754/modern/displayengine-ovmf-x64-modern.png

Visual sanity:

  • Native baseline capture: non-empty OVMF EFI Firmware Setup/FormBrowser page; not boot selector, blank, or crash.
  • Modern capture: non-empty OVMF EFI Firmware Setup/FormBrowser page; not boot selector, blank, or crash.
  • Modern capture visibly shows the dark/orange DisplayEngine treatment, modern row surface/highlight, right-side contextual help region, and footer hotkey area.
  • Header seconds/status chip are implemented and build/smoke covered, but this specific front-page capture does not clearly expose every status/chrome affordance.

Boundary notes

This PR intentionally does not add:

  • DisplayEngine-owned SetVariable
  • RouteConfig / ExtractConfig
  • HiiSetBrowserData
  • ConfigAccess
  • direct hardware probing
  • native DisplayEngine UX changes

REBOOT REQUIRED is a reserved display state only. It is not inferred from generic unsaved state until a real platform/FormBrowser source is wired.

@MarsDoge MarsDoge changed the title phase36(display-engine): add FormModel row accents phase36(display-engine): polish row UX and dynamic state boundary May 23, 2026
@MarsDoge MarsDoge merged commit 4b6d95f into main May 23, 2026
1 check passed
@MarsDoge MarsDoge deleted the phase36/displayengine-row-visual-polish branch May 23, 2026 13:40
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