Tier 0: render what the services already decided, honestly

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-25 00:24:30 -04:00
parent be0e55214b
commit 8b1205e4b8
38 changed files with 1474 additions and 260 deletions
@@ -637,6 +637,21 @@ SettingsPage {
readonly property bool lastAdministrator:
otherBlock.modelData.administrator && UserAccounts.administratorCount <= 1
// The real path, from accountsservice, rather than the home root
// joined to the account name. Every sentence below used to
// construct that guess, the armed confirmation for deleting the
// files among them — so a home that had been moved was named
// confidently and wrongly exactly where being wrong costs the
// most. When no path is reported, the sentences name the
// directory in words rather than inventing one.
readonly property string homePath:
UserAccounts.homeDirectory(otherBlock.modelData)
readonly property bool homeKnown: otherBlock.homePath !== ""
readonly property string homePhrase: otherBlock.homeKnown
? otherBlock.homePath : "their home directory"
readonly property string homeSubject: otherBlock.homeKnown
? otherBlock.homePath : "Their home directory"
SettingRow {
width: otherBlock.width
label: UserAccounts.displayName(otherBlock.modelData)
@@ -706,12 +721,12 @@ SettingsPage {
OptionPickerRow {
width: otherBlock.width - 14
label: "Their files"
detail: "What deleting the account does to /home/" + otherBlock.userName
detail: "What deleting the account does to " + otherBlock.homePhrase
options: [
{
value: "keep",
label: "Keep the files",
detail: "/home/" + otherBlock.userName
detail: otherBlock.homeSubject
+ " stays exactly where it is, and you can hand it to someone later"
},
{
@@ -734,9 +749,9 @@ SettingsPage {
if (!otherBlock.confirming)
return "The account stops existing. What happens to their files is the choice above.";
if (root.removalDisposition === "remove")
return "This cannot be undone — /home/" + otherBlock.userName
return "This cannot be undone — " + otherBlock.homePhrase
+ " and everything in it is deleted along with the account.";
return "Their files stay in /home/" + otherBlock.userName
return "Their files stay in " + otherBlock.homePhrase
+ ", so only the account itself goes.";
}
controlWidth: 260