Skip to main content

PARITY

The GNOME frontend is the reference: it is the one that shipped and has end-to-end tests. This page records what each of the other four renders of the same contract. A gap is then a line here, not a surprise on an ISO. docs/DESIGN-AUDIT.md covers how each looks against its desktop; this page covers what each does.

Branding copy keys​

Every key in shared/branding/copy-defaults.json is a line a product may rebrand. A frontend "renders" a key when the line appears where the table says. "Hidden" means the frontend shows nothing for an empty value. "No" means the frontend shows its own hardcoded text, so a product cannot rebrand that line.

tests/unit/test_copy_coverage.py enforces the "no" cells. It scans each frontend for every key and compares what it finds against its own KNOWN_GAPS table. An unlisted gap fails the test. So does a listed gap that the frontend has since closed. Before that check, four cells here claimed a render that nobody had wired up.

KeyGNOMEKDECOSMICNiriXFCE
welcome_titlepage headerheadingtitle1headingpage title
welcome_subtitleheader subtitle, hiddenlabel, hiddenbody, hiddenlabel, hiddenlabel, hidden
welcome_installinstall row titleno (own body text)no (no install row)no (no install row)live-system radio
welcome_install_subtitleinstall row subtitlenononolive-system radio subtitle
welcome_buttonno (row activates, own label)Next button on welcomeforward buttonbuttonNext button on welcome
confirm_titlepage headerstep headingpage titleheadingpage title
confirm_subtitleheader subtitleitalic label, hiddenpage subtitlelabel, hiddenlabel, hidden
confirm_bodydim label, hiddenlabel, hiddenbody, hiddenlabel, hiddenlabel, hidden
confirm_warningsummary warning rowinline messagewarning cardwarning linewarning row
confirm_buttonpill buttonNext buttonforward buttonbuttonNext button
confirm_quotesrandom line per languagenononono
progress_titleimage-writing step labellabelpage titleheadingpage title
progress_notecaption under the step labellabelwarning captioncaptiondim label under the bar
recovery_key_titlepage headingheadingheadingheadingheading
recovery_key_bodylabellabelbodylabellabel
recovery_key_copycopy button tooltipcopy buttoncopy buttoncopy buttoncopy button
recovery_key_ackcheckboxcheckboxcheckboxcheckboxcheckbox
done_titlepage headerheadingtitle2headingheadline
done_subtitleheader subtitle (+ elapsed time)labelbodylabellabel
done_restartReboot Now buttonRestart buttonsuggested buttonbuttonReboot button
done_failed_titlepage headerheadingtitle2headingheadline
store_labeldone page link to store_url (+ QR from assets.store_qr, US locale)done page linkdone page linkdone page linkdone page link
assets.welcome_image, assets.complete_imagetour pagesnonowelcome logo disc (logo)no

Outside the contract, under extensions.gnome: the tour page text, the install video and the credits file. They are the last GNOME-only features. The plan is to port the tour artwork (welcome and complete images) to the other four. Video and credits then leave the contract; nothing else gets them.

All five render the identity keys (name, id, default_hostname, default_image, URLs); see shared/branding/README.md.

Features​

FeatureGNOMEKDECOSMICNiriXFCE
Image catalog choiceyes (fisherman images.json)no (live or default_image)no (live or default_image)no (live or default_image)yes
Live-ISO install without downloadyesyesyesyesyes
Offline image storesyesyesyesyesyes
Disk choice with erase warningyesyesyesyesyes
Filesystem choiceyesyesyesno (xfs)yes (Advanced)
Encryption: none / passphraseyesyesyesyesyes
Encryption: TPM / TPM + passphraseyesyesyesyesyes
Recovery key page after TPM enrolmentyesyesyesyesyes
Hostnamegenerated, editable on confirmfieldfieldfield on confirmfield
User accountyes (companion or wizard)nononoyes
Phone companion (QR)yesnononono
Windows data migration (slurp)yesnononono
Keyboard / language / timezoneyesnononono
Progress bar from fisherman's protocolyesyesyesyesyes
Restart from the done pageyesyesyesyesyes
Show log after failureyeslog pathlog in pagelog in pagelog tail
Screenshot walkthrough + parity reportyesyesyesyesyes
End-to-end gate (real install and boot)yesyesyesyesyes

Closing the gaps, in order​

  1. Encryption set (KDE, XFCE) — not a gap. Both offer TPM and TPM + passphrase today. Each hides the two choices when /sys/class/tpm/tpm0 is missing. No CI runner has a TPM. The capture thus showed only two of the choices, and this table copied it. Set BOOTC_INSTALLER_FAKE_TPM=1 to capture all four.
  2. Progress bar — closed. All five read shared/progress/README.md now. This entry said that fisherman emits [n/9]. It does not. Three frontends used that claim, so their bars stayed at zero. Their fixtures used the same shape, so the pictures showed a bar that moved. Drive the bar from cumulative_pct, not from step / total_steps: total_steps changes with the recipe, and one step takes 87% of the time.
  3. Recovery key page — closed. fisherman prints the key after TPM enrolment. GNOME shows a page. The other four show a panel on the done screen. Each holds the restart button until the user acknowledges the key (#129).
  4. User account (KDE, COSMIC, Niri): a username, full name and password step that writes the recipe's user block, as XFCE does.
  5. Store and tour assets (all four): only worth it where the desktop has a place for artwork. Every resolver already resolves the keys, so this is view work only.
  6. Companion, slurp, locale steps: GNOME-only by design for now. The contract keeps their copy keys out of copy-defaults.json, so nothing else pretends to have them.