Use the durable Home reset boundary

This commit is contained in:
Gabriel Brown
2026-08-18 01:39:34 -04:00
parent 1b323c2fa5
commit 787d2b121a
2 changed files with 10 additions and 6 deletions
@@ -396,12 +396,9 @@ Singleton {
// that only cleared the schema store would silently leave a customised // that only cleared the schema store would silently leave a customised
// favourites list behind while claiming to restore Panama's defaults. // favourites list behind while claiming to restore Panama's defaults.
// //
// Done through HomePreferences' public writable aliases rather than a // HomePreferences owns the write-through boundary so the state file is
// reset function of its own: clearing `favorites` and returning // rewritten before this reset can be considered complete.
// `initialized` to false is exactly the state a fresh install has, and HomePreferences.resetHomeDefaults();
// it lets initialize() seed the list again on next use.
HomePreferences.favorites = [];
HomePreferences.initialized = false;
resettleTimer.restart(); resettleTimer.restart();
} }
@@ -19,6 +19,7 @@ set -euo pipefail
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
harness="$repo_dir/config/dot/quickshell/settings-system-harness.qml" harness="$repo_dir/config/dot/quickshell/settings-system-harness.qml"
system_settings="$repo_dir/config/dot/quickshell/services/SystemSettings.qml"
# Preferences are committed to $XDG_CONFIG_HOME, and the Home store lives under # Preferences are committed to $XDG_CONFIG_HOME, and the Home store lives under
# $XDG_STATE_HOME. Both are isolated so this contract cannot touch the real # $XDG_STATE_HOME. Both are isolated so this contract cannot touch the real
@@ -31,6 +32,12 @@ fail() {
exit 1 exit 1
} }
rg -Fq 'HomePreferences.resetHomeDefaults();' "$system_settings" \
|| fail 'restoreDefaults does not use the durable Home reset boundary'
if rg -q 'HomePreferences\.(favorites|initialized)\s*=' "$system_settings"; then
fail 'restoreDefaults mutates Home aliases instead of using resetHomeDefaults'
fi
qs_for_harness() { qs_for_harness() {
XDG_CONFIG_HOME="$config_home" XDG_STATE_HOME="$state_home" qs -p "$harness" "$@" XDG_CONFIG_HOME="$config_home" XDG_STATE_HOME="$state_home" qs -p "$harness" "$@"
} }