Skip to content

Show install summary when configuration is valid#4475

Merged
svartkanin merged 2 commits intoarchlinux:masterfrom
Softer:install-ready-summary
Apr 28, 2026
Merged

Show install summary when configuration is valid#4475
svartkanin merged 2 commits intoarchlinux:masterfrom
Softer:install-ready-summary

Conversation

@Softer
Copy link
Copy Markdown
Contributor

@Softer Softer commented Apr 24, 2026

About

Adds a "Ready to install" confirmation plus a two-column summary of the current configuration to the Install menu preview. Previously the preview was empty when everything was valid, giving the user no
explicit "ready" signal.

Rows

The summary shows one row per meaningful section, skipping any whose underlying config is not set: disks with FS and optional LUKS flag, bootloader, kernel, profile, greeter, additional package count, network,
locale, timezone. Column width adapts to the longest translated label so i18n does not break the alignment.

How does it look?

image

Test plan

  • Hover Install with an empty config: missing configurations list appears (unchanged).
  • Hover Install with an invalid bootloader config: existing error text appears (unchanged).
  • Hover Install with a valid config on UEFI with LUKS: "Ready to install" followed by the summary, disks row shows (fs + LUKS).
  • Non-desktop profile (Server, Minimal): Profile row shows profile name, Greeter row is skipped.
  • Desktop profile with greeter selected: Profile row shows DE names, Greeter row shows greeter value.
  • Locales other than English: labels translate and column alignment still holds.

Previously the Install menu preview was empty when everything was valid,
leaving the user with no "ready" signal. Now show "Ready to install"
plus a two-column summary of the current configuration.

- New _install_summary() composes an aligned key/value table with rows
  for disks+FS+LUKS, bootloader, kernel, profile, greeter, package
  count, network, locale and timezone. Column width adapts to the
  longest translated label so translations keep the alignment.
- Rows whose underlying config is not set are skipped rather than
  rendered as empty.
- base.pot / uk base.po: add new msgids for summary labels.
@Softer Softer requested a review from Torxed as a code owner April 24, 2026 15:31
Comment thread archinstall/lib/global_menu.py Outdated
Comment thread archinstall/lib/global_menu.py
The summary helper that renders the install preview's two-column
configuration overview lived in GlobalMenu. Move it to
ConfigurationOutput.as_summary() so it sits alongside the JSON
output methods that share the same role. The preview now syncs
menu state to ArchConfig and delegates rendering.
@Softer
Copy link
Copy Markdown
Contributor Author

Softer commented Apr 26, 2026

First comment: done. ConfigurationOutput.as_summary() lives next to the JSON methods now, preview delegates to it.

On the second one I'd argue the opposite. The Install-button preview is where the user decides; the confirm screen is just a safety net. Putting the summary on the preview is exactly what lets the decision be informed - showing it again on confirm doesn't help anyone who didn't already read the preview. So I'd rather keep the summary on preview and strip confirm_config down to a plain yes/no (drop the JSON dump entirely). Then your "rework the JSON to be prettier" task disappears - that screen stops being an info surface.

Where the preview can grow is colour: red for blockers (missing config, invalid bootloader), yellow for non-blocking warnings (no network from #4408, future firmware case from #4466), green for ready-to-install. One go / wait / fix signal at the moment of decision.

Happy to do colour + drop the JSON from confirm in a follow-up PR after this merges. :)

@svartkanin svartkanin merged commit 08cba23 into archlinux:master Apr 28, 2026
9 checks passed
@svartkanin
Copy link
Copy Markdown
Collaborator

@Softer thanks makes sense.
I'm happy to get this merged for now as is and we can work on the confirmation screen later on. I don't want to remove the summary/full details from the confirmation screen as it's a nice visualization of what has been chosen and what the user is actually confirming.

I know I suggested to move this into the configuration.py so I think this is good to merge for now. But having had another look at it and the

config: Any = {
the config gets assembled in a JSON in there whereas now it's distributed across multiple files.

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.

2 participants