Merge remote-tracking branch 'origin/main' into feat/panama-health

# Conflicts:
#	config/dot/quickshell/modules/settings/HealthPage.qml
#	tests/quickshell/health-ui-contract.sh
This commit is contained in:
Gabriel Brown
2026-08-18 11:41:33 -04:00
10 changed files with 281 additions and 67 deletions
@@ -8,7 +8,7 @@ SettingsPage {
objectName: "system-health-page"
title: "System Health"
lede: "Panama checks the parts of your desktop it owns and explains what needs attention."
lede: "Checks the parts of the desktop this app owns, and explains what needs attention."
property var pendingConfirmation: null
property string instructionTarget: ""
@@ -32,7 +32,7 @@ SettingsPage {
},
{
group: "panama-tools",
title: "Panama tools",
title: "Desktop tools",
subtitle: "Tracked links, launcher commands, apps, and inhibitors."
}
]
@@ -204,7 +204,7 @@ SettingsPage {
width: parent.width
text: root.pendingConfirmation
? `${root.pendingConfirmation.action.label}?`
: "Restart Panama?"
: "Restart the shell?"
color: Theme.fg
font.family: Theme.fontFamily
font.pixelSize: Theme.fontSize
@@ -234,7 +234,7 @@ SettingsPage {
SettingsButton {
id: repairButton
text: root.pendingConfirmation ? root.pendingConfirmation.action.label : "Restart Panama"
text: root.pendingConfirmation ? root.pendingConfirmation.action.label : "Restart the shell"
activeFocusOnTab: true
border.width: activeFocus ? 2 : 1
border.color: activeFocus ? Theme.accent : Theme.alpha(Theme.fg, 0.08)
@@ -297,7 +297,7 @@ SettingsPage {
SettingsCard {
visible: root.instructionTarget === "ddc-permissions"
title: "External monitor brightness"
subtitle: "Panama can see DDC/CI support, but this session cannot access the monitor bus."
subtitle: "The monitor reports DDC/CI support, but this session cannot reach the monitor bus."
Item {
width: parent.width
@@ -401,7 +401,7 @@ SettingsPage {
anchors.right: gnomeSettingsButton.left
anchors.rightMargin: 18
anchors.verticalCenter: parent.verticalCenter
text: "Use GNOME Settings for the parts of the system Panama does not manage."
text: "Use GNOME Settings for the parts of the system this app does not manage."
color: Theme.fgDim
font.family: Theme.fontFamily
font.pixelSize: Theme.fontSizeSmall
@@ -13,7 +13,7 @@ SettingsCard {
if (Health.diagnosticUnavailable)
return "Health check unavailable";
if (Health.checks.length === 0)
return "Checking Panama desktop";
return "Checking the desktop";
if (Health.status === "error")
return "Action required";
if (Health.status === "warning")
@@ -22,9 +22,9 @@ SettingsCard {
}
readonly property string heroDetail: {
if (Health.diagnosticUnavailable)
return Health.lastError || "Panama could not complete the latest health check.";
return Health.lastError || "The latest health check could not be completed.";
if (Health.checks.length === 0)
return "Panama is checking the desktop services, tools, and integrations it owns.";
return "Checking the desktop services, tools, and integrations this app owns.";
if (Health.status === "error")
return root.observationCount === 1
? "One part of the desktop needs action."
@@ -33,7 +33,7 @@ SettingsCard {
return root.observationCount === 1
? "Your desktop is working. One feature needs a decision."
: `Your desktop is working. ${root.observationCount} features need a decision.`;
return "Panama-owned desktop services and tools are working normally.";
return "Desktop services and tools are working normally.";
}
readonly property color statusColor: {
if (Health.diagnosticUnavailable || Health.status === "error")
@@ -301,14 +301,14 @@ Rectangle {
function footerText(): string {
if (Health.checks.length === 0)
return Health.diagnosticUnavailable ? "Health check unavailable" : "Checking Panama desktop";
return Health.diagnosticUnavailable ? "Health check unavailable" : "Checking the desktop";
if (Health.status === "error")
return "Panama requires attention";
return "Desktop needs attention";
if (Health.status === "warning") {
const count = Health.summary.warnings + Health.summary.errors;
return count + (count === 1 ? " health observation" : " health observations");
}
return "Panama desktop is healthy";
return "Desktop is healthy";
}
function footerColor(): color {