Bound the notification app list, and give Focus a real editor

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 14:25:26 -04:00
parent 07db1068f1
commit d5b6e62515
21 changed files with 1405 additions and 453 deletions
+13
View File
@@ -23,6 +23,7 @@ routes="$repo_dir/config/dot/quickshell/services/SettingsRoutes.qml"
modules="$repo_dir/config/dot/quickshell/modules"
dock_menu="$modules/dock/DockContextMenu.qml"
notification_card="$modules/notifications/NotificationCard.qml"
gaming_page="$modules/settings/GamingPage.qml"
osd="$modules/osd/Osd.qml"
fail() {
@@ -79,6 +80,18 @@ grep -qF 'ShellState.openSettings("notifications")' "$notification_card" \
grep -qF 'Popover {' "$notification_card" \
|| fail 'notification Settings action is not contained in an overflow menu'
# The Gaming page does not own the Game Mode switch any more -- a focus mode
# does -- so its only honest affordance is a way to reach that mode. It used to
# assign ShellState.settingsPage directly, which skipped resolve() entirely and
# so skipped the guard above; and it pointed at "notifications", which was
# right only while focus modes rendered on that page.
grep -qF 'Open Focus' "$gaming_page" \
|| fail 'the Gaming page no longer offers a way to reach the mode that replaced its switch'
grep -qF 'ShellState.openSettings("focus")' "$gaming_page" \
|| fail 'the Gaming page does not open the Focus tab through openSettings(), so this contract cannot see where it lands'
grep -qF 'ShellState.settingsPage = ' "$gaming_page" \
&& fail 'the Gaming page still sets the settings page by hand, bypassing SettingsRoutes.resolve()'
grep -qF 'acceptedButtons: Qt.RightButton' "$osd" \
|| fail 'OSD does not accept its contextual secondary click'
grep -qF 'ShellState.openSettings("accessibility")' "$osd" \