From 7a40b4974d4bc590712bdd5a93fd0cf3fbfa26ac Mon Sep 17 00:00:00 2001 From: SiteRelEnby <125829806+SiteRelEnby@users.noreply.github.com> Date: Mon, 27 Jul 2026 16:03:33 -0400 Subject: [PATCH] refactor(ui): move features out of Settings, leaving it configuration Second half of the navigation rework. The drawer gave every feature a home; this takes the feature entries back out of Settings so there is one obvious place for each thing rather than two. Reminders and Relationships lose their Settings rows: both are drawer destinations now, and a feature listed in both places is the ambiguity we set out to remove. Their routes move off the settings/ prefix accordingly, along with Support and the relationship graph: settings/notifications/reminders -> reminders settings/relationships -> relationships settings/relationships/graph -> relationships/graph settings/support -> support The relationship graph deliberately stays a drill-in from the relationships screen rather than becoming a drawer destination of its own: it is a pan/zoom fight the panning. Files and Support keep their Settings rows. Neither is a buried feature: Files is upload management that belongs with the other data tools, and Support is contact and policy info people reasonably look for in Settings. Settings now holds account, appearance, notification configuration, safety, data, server, system definitions, danger zone and about. --- .../java/systems/lupine/sheaf/ui/SheafApp.kt | 16 +++++++--------- .../sheaf/ui/settings/SettingsCategoryScreens.kt | 16 ---------------- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/sheaf/app/src/main/java/systems/lupine/sheaf/ui/SheafApp.kt b/sheaf/app/src/main/java/systems/lupine/sheaf/ui/SheafApp.kt index b3ceeb3..ca98f93 100644 --- a/sheaf/app/src/main/java/systems/lupine/sheaf/ui/SheafApp.kt +++ b/sheaf/app/src/main/java/systems/lupine/sheaf/ui/SheafApp.kt @@ -109,7 +109,7 @@ object Routes { const val FILES = "settings/files" const val EXPORT_DATA = "settings/export" const val DEBUG = "settings/debug" - const val SUPPORT = "settings/support" + const val SUPPORT = "support" // Categorized settings detail screens. const val SETTINGS_ACCOUNT = "settings/account" const val SETTINGS_ADMIN_ACTIVITY = "settings/account/admin-activity" @@ -118,8 +118,8 @@ object Routes { const val SETTINGS_SERVER = "settings/server" const val SETTINGS_SYSTEM = "settings/sys" const val ARCHIVED_MEMBERS = "settings/archived-members" - const val RELATIONSHIPS = "settings/relationships" - const val RELATIONSHIP_GRAPH = "settings/relationships/graph" + const val RELATIONSHIPS = "relationships" + const val RELATIONSHIP_GRAPH = "relationships/graph" const val SETTINGS_DATA = "settings/data" const val SETTINGS_SAFETY = "settings/safety-cat" const val SETTINGS_DANGER = "settings/danger" @@ -131,9 +131,9 @@ object Routes { const val NOTIFICATIONS_OWNED = "settings/notifications/owned" const val NOTIFICATIONS_CREATE = "settings/notifications/owned/new" const val NOTIFICATIONS_CHANNEL_DETAIL = "settings/notifications/owned/{channelId}" - const val NOTIFICATIONS_REMINDERS = "settings/notifications/reminders" - const val NOTIFICATIONS_REMINDER_NEW = "settings/notifications/reminders/new" - const val NOTIFICATIONS_REMINDER_EDIT = "settings/notifications/reminders/{id}" + const val NOTIFICATIONS_REMINDERS = "reminders" + const val NOTIFICATIONS_REMINDER_NEW = "reminders/new" + const val NOTIFICATIONS_REMINDER_EDIT = "reminders/{id}" const val POLLS = "polls" const val POLL_DETAIL = "polls/{pollId}" const val POLL_NEW = "polls/new" @@ -480,7 +480,6 @@ fun SheafApp( onNavigateToReceiving = { navController.navigate(Routes.NOTIFICATIONS_RECEIVING) }, onNavigateToYourDevices = { navController.navigate(Routes.NOTIFICATIONS_DEVICES) }, onNavigateToChannelsYouOwn = { navController.navigate(Routes.NOTIFICATIONS_OWNED) }, - onNavigateToReminders = { navController.navigate(Routes.NOTIFICATIONS_REMINDERS) }, ) } composable(Routes.NOTIFICATIONS_RECEIVING) { @@ -525,7 +524,7 @@ fun SheafApp( onNavigateUp = { navController.navigateUp() }, onCreateNew = { navController.navigate(Routes.NOTIFICATIONS_REMINDER_NEW) }, onEdit = { id -> - navController.navigate("settings/notifications/reminders/$id") + navController.navigate("reminders/$id") }, ) } @@ -582,7 +581,6 @@ fun SheafApp( onNavigateToCustomFields = { navController.navigate(Routes.CUSTOM_FIELDS) }, onNavigateToTags = { navController.navigate(Routes.SETTINGS_TAGS) }, onNavigateToArchivedMembers = { navController.navigate(Routes.ARCHIVED_MEMBERS) }, - onNavigateToRelationships = { navController.navigate(Routes.RELATIONSHIPS) }, ) } composable(Routes.RELATIONSHIPS) { diff --git a/sheaf/app/src/main/java/systems/lupine/sheaf/ui/settings/SettingsCategoryScreens.kt b/sheaf/app/src/main/java/systems/lupine/sheaf/ui/settings/SettingsCategoryScreens.kt index 4612984..f8a2375 100644 --- a/sheaf/app/src/main/java/systems/lupine/sheaf/ui/settings/SettingsCategoryScreens.kt +++ b/sheaf/app/src/main/java/systems/lupine/sheaf/ui/settings/SettingsCategoryScreens.kt @@ -535,7 +535,6 @@ fun NotificationSettingsScreen( onNavigateToReceiving: () -> Unit, onNavigateToYourDevices: () -> Unit, onNavigateToChannelsYouOwn: () -> Unit, - onNavigateToReminders: () -> Unit, viewModel: SettingsViewModel = hiltViewModel(), ) { val frontNotificationEnabled by viewModel.frontNotificationEnabled.collectAsState() @@ -565,13 +564,6 @@ fun NotificationSettingsScreen( onClick = onNavigateToChannelsYouOwn, ) HorizontalDivider(modifier = Modifier.padding(start = 56.dp)) - SettingItem( - icon = Icons.Outlined.Alarm, - title = "Reminders", - subtitle = "Schedule pings or send pings on front changes", - onClick = onNavigateToReminders, - ) - HorizontalDivider(modifier = Modifier.padding(start = 56.dp)) SettingItem( icon = Icons.Outlined.DevicesOther, title = "Your devices", @@ -740,7 +732,6 @@ fun SystemCategoryScreen( onNavigateToCustomFields: () -> Unit, onNavigateToTags: () -> Unit, onNavigateToArchivedMembers: () -> Unit, - onNavigateToRelationships: () -> Unit, ) { CategoryScaffold(title = "System", onNavigateUp = onNavigateUp) { SettingItem( @@ -757,13 +748,6 @@ fun SystemCategoryScreen( onClick = onNavigateToCustomFields, ) HorizontalDivider(modifier = Modifier.padding(start = 56.dp)) - SettingItem( - icon = Icons.Outlined.Hub, - title = "Relationships", - subtitle = "Define relationship types between members and groups", - onClick = onNavigateToRelationships, - ) - HorizontalDivider(modifier = Modifier.padding(start = 56.dp)) SettingItem( icon = Icons.Outlined.Archive, title = "Archived members",