feat(settings): nest groups, add breadcrumbs, search, basic/advanced toggle #281

Merged
David merged 3 commits from feat/MAPPS-258-settings-nesting-breadcrumbs-search into main 2026-06-19 11:13:10 +02:00
Owner

Introduce a single const taxonomy table (SETTINGS_SURFACES plus SettingsGroupKey) in settings.rs as the source of truth for the settings information architecture. The table carries each surface's route, title, description, parent group, and an advanced flag, and it drives the index, the per-group landing pages, the breadcrumb trail, and the search filter so a new surface gets all four for free (MAPPS-258).

Nest the hub: the /settings index now lists the four group cards (Service & Asset Types, Billing & SLA, Tickets, Integrations) plus the Personalization leaf, and each group gets its own landing route (/settings/group/*) that lists only that group's surfaces. The eighteen leaf routes stay flat, so existing deep links and bookmarks keep resolving (the index just gains a level, per the MAPPS-169 keep-old-links principle).

Add a SettingsBreadcrumb component that renders Settings > Group > Leaf from the taxonomy, with clickable ancestor links, and wire it into every settings.rs-owned sub-page in place of the old single "Back to Settings" button. The group landing pages render Settings > Group. The re-homed surfaces (SLA, rate cards, tax rates, gateways) share components with their non-settings routes and are left unchanged to avoid showing a settings breadcrumb off the settings path; they still appear in the taxonomy so the index, search, and nesting cover them.

Add a search box on the index bound to a use_signal(String) that filters the taxonomy case-insensitively by title and description and shows matching leaf cards in a flat list while a query is present, bypassing the nesting so deep surfaces are one step away; the grouped view returns when the query is empty.

Add a basic/advanced toggle (a checkbox) on the index whose state persists via crate::utils::prefs::set_bool under settings_show_advanced, defaulting to basic. Basic mode hides the advanced-flagged surfaces (Tax Rates, Payment Gateways, Ticket Categories, and the three RMM surfaces) from the index, group landings, and search; a group whose every surface is advanced drops off the basic index, and its landing shows a hint to enable advanced settings. No server changes are required.

#MAPPS-258

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

Introduce a single const taxonomy table (SETTINGS_SURFACES plus SettingsGroupKey) in settings.rs as the source of truth for the settings information architecture. The table carries each surface's route, title, description, parent group, and an advanced flag, and it drives the index, the per-group landing pages, the breadcrumb trail, and the search filter so a new surface gets all four for free (MAPPS-258). Nest the hub: the /settings index now lists the four group cards (Service & Asset Types, Billing & SLA, Tickets, Integrations) plus the Personalization leaf, and each group gets its own landing route (/settings/group/*) that lists only that group's surfaces. The eighteen leaf routes stay flat, so existing deep links and bookmarks keep resolving (the index just gains a level, per the MAPPS-169 keep-old-links principle). Add a SettingsBreadcrumb component that renders Settings > Group > Leaf from the taxonomy, with clickable ancestor links, and wire it into every settings.rs-owned sub-page in place of the old single "Back to Settings" button. The group landing pages render Settings > Group. The re-homed surfaces (SLA, rate cards, tax rates, gateways) share components with their non-settings routes and are left unchanged to avoid showing a settings breadcrumb off the settings path; they still appear in the taxonomy so the index, search, and nesting cover them. Add a search box on the index bound to a use_signal(String) that filters the taxonomy case-insensitively by title and description and shows matching leaf cards in a flat list while a query is present, bypassing the nesting so deep surfaces are one step away; the grouped view returns when the query is empty. Add a basic/advanced toggle (a checkbox) on the index whose state persists via crate::utils::prefs::set_bool under settings_show_advanced, defaulting to basic. Basic mode hides the advanced-flagged surfaces (Tax Rates, Payment Gateways, Ticket Categories, and the three RMM surfaces) from the index, group landings, and search; a group whose every surface is advanced drops off the basic index, and its landing shows a hint to enable advanced settings. No server changes are required. #MAPPS-258 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(settings): nest groups, add breadcrumbs, search, basic/advanced toggle
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 1m1s
305800322c
Introduce a single const taxonomy table (SETTINGS_SURFACES plus SettingsGroupKey) in settings.rs as the source of truth for the settings information architecture. The table carries each surface's route, title, description, parent group, and an advanced flag, and it drives the index, the per-group landing pages, the breadcrumb trail, and the search filter so a new surface gets all four for free (MAPPS-258).

Nest the hub: the /settings index now lists the four group cards (Service & Asset Types, Billing & SLA, Tickets, Integrations) plus the Personalization leaf, and each group gets its own landing route (/settings/group/*) that lists only that group's surfaces. The eighteen leaf routes stay flat, so existing deep links and bookmarks keep resolving (the index just gains a level, per the MAPPS-169 keep-old-links principle).

Add a SettingsBreadcrumb component that renders Settings > Group > Leaf from the taxonomy, with clickable ancestor links, and wire it into every settings.rs-owned sub-page in place of the old single "Back to Settings" button. The group landing pages render Settings > Group. The re-homed surfaces (SLA, rate cards, tax rates, gateways) share components with their non-settings routes and are left unchanged to avoid showing a settings breadcrumb off the settings path; they still appear in the taxonomy so the index, search, and nesting cover them.

Add a search box on the index bound to a use_signal(String) that filters the taxonomy case-insensitively by title and description and shows matching leaf cards in a flat list while a query is present, bypassing the nesting so deep surfaces are one step away; the grouped view returns when the query is empty.

Add a basic/advanced toggle (a checkbox) on the index whose state persists via crate::utils::prefs::set_bool under settings_show_advanced, defaulting to basic. Basic mode hides the advanced-flagged surfaces (Tax Rates, Payment Gateways, Ticket Categories, and the three RMM surfaces) from the index, group landings, and search; a group whose every surface is advanced drops off the basic index, and its landing shows a hint to enable advanced settings. No server changes are required.

#MAPPS-258

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merge branch 'main' into feat/MAPPS-258-settings-nesting-breadcrumbs-search
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 1m33s
5d9b02a9c6
Merge branch 'main' into feat/MAPPS-258-settings-nesting-breadcrumbs-search
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
Check / clippy + fmt + tests (pull_request) Successful in 1m50s
8e5d0bfd28
David merged commit 8a763ffa02 into main 2026-06-19 11:13:10 +02:00
David deleted branch feat/MAPPS-258-settings-nesting-breadcrumbs-search 2026-06-19 11:13:11 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!281
No description provided.