feat(web): rationalize settings IA into personal-preferences shell with admin rehoming [SPRINT-026]
Settings shell now owns only personal user preferences (appearance, language, layout, AI assistant). All 14 admin/tenant/ops leaves converted to controlled redirects pointing at their canonical owners (Administration, Setup, Ops). Language merged into user-preferences. Identity-providers rehomed from settings to administration as canonical owner. Navigation config updated. 22 new route tests added. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
57
docs/features/checked/web/settings-ia-rationalization-ui.md
Normal file
57
docs/features/checked/web/settings-ia-rationalization-ui.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Settings IA Rationalization
|
||||
|
||||
## Summary
|
||||
The Settings shell has been rationalized from a mixed bucket of user preferences, admin consoles, setup pages, and redirect shims into a truthful personal-preferences surface. The `/settings` default now lands on User Preferences (appearance, language, layout, AI assistant) instead of Integrations.
|
||||
|
||||
## What changed
|
||||
|
||||
### Settings default
|
||||
- `/settings` now defaults to User Preferences instead of Integrations.
|
||||
|
||||
### Personal preferences (canonical owner: Settings)
|
||||
- `user-preferences` -- the single personal-settings page with Appearance, Language, Layout, and AI Assistant sections.
|
||||
|
||||
### Merged preference leaves (redirects to user-preferences)
|
||||
- `language` -- was a standalone duplicate of the language section already present in user-preferences.
|
||||
- `ai-preferences` -- already redirected to user-preferences (preserved).
|
||||
|
||||
### Admin/tenant leaves rehomed via redirects
|
||||
| Legacy URL | Redirect Target |
|
||||
|---|---|
|
||||
| `/settings/admin` | `/administration/admin` |
|
||||
| `/settings/admin/:page` | `/administration/admin/:page` |
|
||||
| `/settings/branding` | `/console/admin/branding` |
|
||||
| `/settings/identity-providers` | `/administration/identity-providers` |
|
||||
| `/settings/system` | `/administration/system` |
|
||||
| `/settings/security-data` | `/administration/security-data` |
|
||||
| `/settings/offline` | `/administration/offline` |
|
||||
|
||||
### Operations/setup leaves rehomed via redirects
|
||||
| Legacy URL | Redirect Target |
|
||||
|---|---|
|
||||
| `/settings/integrations` | `/setup/integrations` |
|
||||
| `/settings/integrations/:id` | `/setup/integrations/:id` |
|
||||
| `/settings/usage` | `/setup/usage` |
|
||||
| `/settings/notifications` | `/setup/notifications` |
|
||||
| `/settings/policy` | `/ops/policy/governance` |
|
||||
| `/settings/release-control` | `/setup/topology/environments` |
|
||||
| `/settings/configuration-pane` | `/ops/platform-setup` |
|
||||
|
||||
### Trust redirects preserved
|
||||
All `trust/*` and `trust-signing/*` redirects to `/setup/trust-signing/*` remain unchanged.
|
||||
|
||||
### Navigation config
|
||||
- `identity-providers` admin nav item now points to `/administration/identity-providers` instead of `/settings/identity-providers`.
|
||||
|
||||
### Administration routes
|
||||
- `/administration/identity-providers` now loads the IdentityProvidersSettingsPageComponent directly instead of redirecting to `/settings/identity-providers` (breaks the redirect loop created by the settings rehoming).
|
||||
|
||||
## Test evidence
|
||||
- 22 new tests in `settings-ia-rationalization.spec.ts` covering personal preference defaults, merged redirects, admin redirects, ops redirects, trust preservation, and route count validation.
|
||||
- 3 existing tests in `unified-settings-page.behavior.spec.ts` updated and passing.
|
||||
- 5 existing tests in `setup-topology-trust-cutover.spec.ts` verified passing (no regression).
|
||||
- All 30 settings tests pass, all 5 trust cutover tests pass.
|
||||
- Build clean (no TypeScript errors).
|
||||
|
||||
## Sprint
|
||||
`SPRINT_20260308_026_FE_settings_information_architecture_rationalization`
|
||||
@@ -24,7 +24,7 @@
|
||||
## Delivery Tracker
|
||||
|
||||
### FE-SETIA-001 - Audit and classify every settings route
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: Product Manager, Developer (FE)
|
||||
Task description:
|
||||
@@ -32,12 +32,12 @@ Task description:
|
||||
- Capture whether each leaf is already visible somewhere else in the product, whether it overlaps an existing page, and whether its current label truthfully matches what the page actually does.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] Every mounted `/settings/*` route is classified into a single ownership bucket.
|
||||
- [ ] Existing visible entry points outside Settings are identified for admin/setup leaves.
|
||||
- [ ] Duplicate or misleading leaves are called out explicitly before implementation begins.
|
||||
- [x] Every mounted `/settings/*` route is classified into a single ownership bucket.
|
||||
- [x] Existing visible entry points outside Settings are identified for admin/setup leaves.
|
||||
- [x] Duplicate or misleading leaves are called out explicitly before implementation begins.
|
||||
|
||||
### FE-SETIA-002 - Freeze the target IA and backward-compatibility contract
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-001
|
||||
Owners: Product Manager, UX
|
||||
Task description:
|
||||
@@ -45,25 +45,25 @@ Task description:
|
||||
- Decide which current URLs remain as redirects, which URLs are removed entirely, and which labels need to change for operator clarity.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] A final ownership decision exists for each current settings leaf.
|
||||
- [ ] Redirect-vs-removal behavior is defined for every legacy or misleading route.
|
||||
- [ ] The target IA is concise enough to explain in one operator-facing diagram or note.
|
||||
- [x] A final ownership decision exists for each current settings leaf.
|
||||
- [x] Redirect-vs-removal behavior is defined for every legacy or misleading route.
|
||||
- [x] The target IA is concise enough to explain in one operator-facing diagram or note.
|
||||
|
||||
### FE-SETIA-003 - Build the personal-settings shell and navigation model
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-002
|
||||
Owners: UX, Developer (FE)
|
||||
Task description:
|
||||
- Redesign the Settings shell around personal preferences only, with explicit sections such as Appearance, Language, Assistant, and Navigation/Layout.
|
||||
- Replace the current “global sidebar owns navigation” fiction with either an in-page settings nav or a sectioned preferences page that is visibly self-contained and understandable.
|
||||
- Replace the current "global sidebar owns navigation" fiction with either an in-page settings nav or a sectioned preferences page that is visibly self-contained and understandable.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] The Settings shell has a truthful navigation model for personal preferences.
|
||||
- [ ] The shell works on desktop and mobile without relying on hidden URL-only leaves.
|
||||
- [ ] User-menu entry points land in a settings experience that is obviously personal, not administrative.
|
||||
- [x] The Settings shell has a truthful navigation model for personal preferences.
|
||||
- [x] The shell works on desktop and mobile without relying on hidden URL-only leaves.
|
||||
- [x] User-menu entry points land in a settings experience that is obviously personal, not administrative.
|
||||
|
||||
### FE-SETIA-004 - Merge overlapping personal preference leaves
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-003
|
||||
Owners: Developer (FE), UX
|
||||
Task description:
|
||||
@@ -71,12 +71,12 @@ Task description:
|
||||
- Preserve deep-link compatibility with redirects or anchored sections where helpful, but remove duplicate editing surfaces.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] Language preferences are owned by the personal settings experience instead of a duplicate page.
|
||||
- [ ] Duplicate personal-preference pages are removed or converted into thin redirects.
|
||||
- [ ] Preference-saving behavior remains intact after the merge.
|
||||
- [x] Language preferences are owned by the personal settings experience instead of a duplicate page.
|
||||
- [x] Duplicate personal-preference pages are removed or converted into thin redirects.
|
||||
- [x] Preference-saving behavior remains intact after the merge.
|
||||
|
||||
### FE-SETIA-005 - Rehome admin, tenant, and operations configuration leaves
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-002
|
||||
Owners: Developer (FE), Product Manager
|
||||
Task description:
|
||||
@@ -84,12 +84,12 @@ Task description:
|
||||
- Ensure these pages are discoverable from the correct Setup/Ops/Admin entry points instead of surviving only as hidden Settings URLs.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] Admin/setup leaves no longer present themselves as user settings.
|
||||
- [ ] Canonical owner routes expose visible entry points for the rehomed capabilities.
|
||||
- [ ] Legacy `/settings/*` bookmarks still resolve through controlled redirects where required.
|
||||
- [x] Admin/setup leaves no longer present themselves as user settings.
|
||||
- [x] Canonical owner routes expose visible entry points for the rehomed capabilities.
|
||||
- [x] Legacy `/settings/*` bookmarks still resolve through controlled redirects where required.
|
||||
|
||||
### FE-SETIA-006 - Remove or collapse wrapper and alias-only settings pages
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-005
|
||||
Owners: Developer (FE)
|
||||
Task description:
|
||||
@@ -97,12 +97,12 @@ Task description:
|
||||
- Keep the compatibility surface focused on redirects, not on maintaining duplicate shells with duplicated copy.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] Alias-only settings pages are reduced to redirects or removed.
|
||||
- [ ] No standalone wrapper remains if its only action is to link elsewhere.
|
||||
- [ ] Route ownership becomes obvious from the code tree.
|
||||
- [x] Alias-only settings pages are reduced to redirects or removed.
|
||||
- [x] No standalone wrapper remains if its only action is to link elsewhere.
|
||||
- [x] Route ownership becomes obvious from the code tree.
|
||||
|
||||
### FE-SETIA-007 - Add focused route, nav, and UX regression coverage
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-004
|
||||
Owners: Test Automation, Developer (FE)
|
||||
Task description:
|
||||
@@ -110,12 +110,12 @@ Task description:
|
||||
- Include tests that prove hidden pages are now either visible from the right place or intentionally redirected.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] Angular route/nav tests cover the new personal settings shell and key redirects.
|
||||
- [ ] Regression coverage exists for at least the current user-menu entry plus representative admin/setup redirects.
|
||||
- [ ] Known IA edge cases are documented in the sprint log or feature note.
|
||||
- [x] Angular route/nav tests cover the new personal settings shell and key redirects.
|
||||
- [x] Regression coverage exists for at least the current user-menu entry plus representative admin/setup redirects.
|
||||
- [x] Known IA edge cases are documented in the sprint log or feature note.
|
||||
|
||||
### FE-SETIA-008 - Sync docs and ship the IA decision
|
||||
Status: TODO
|
||||
Status: DONE
|
||||
Dependency: FE-SETIA-007
|
||||
Owners: Documentation author, Project Manager
|
||||
Task description:
|
||||
@@ -123,21 +123,23 @@ Task description:
|
||||
- Ensure future dead-code or preservation reviews have a truthful owner map for Settings.
|
||||
|
||||
Completion criteria:
|
||||
- [ ] UI docs reflect the final Settings ownership model.
|
||||
- [ ] UI task/plan docs reference the shipped IA.
|
||||
- [ ] A checked-feature note exists for the implemented settings rationalization.
|
||||
- [x] UI docs reflect the final Settings ownership model.
|
||||
- [x] UI task/plan docs reference the shipped IA.
|
||||
- [x] A checked-feature note exists for the implemented settings rationalization.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-08 | Sprint created to rationalize Settings into a truthful personal-preferences surface and rehome admin/setup leaves to their canonical owners. | Codex |
|
||||
| 2026-03-08 | All tasks DONE. Audited 20 settings child routes and classified into 3 personal-preference, 11 admin/tenant-config, and 6 ops/wrapper buckets. Settings default changed from Integrations to User Preferences. 14 admin/ops leaves converted to redirects pointing at their canonical owners (administration, setup, ops). Language merged into user-preferences via redirect. Identity-providers rehomed from settings to administration as canonical owner. Navigation config updated. 22 new route tests added. All 35 settings+trust tests pass. Build clean. | Developer (FE) |
|
||||
|
||||
## Decisions & Risks
|
||||
- Current risk: the existing Settings shell mixes user preferences with admin/setup pages, making most leaves either URL-only or misleadingly named.
|
||||
- UX principle: Settings must answer “what can I personalize for myself?” while Setup/Admin answer “what do I configure for the installation or tenant?”
|
||||
- UX principle: Settings must answer "what can I personalize for myself?" while Setup/Admin answer "what do I configure for the installation or tenant?"
|
||||
- Compatibility risk: old bookmarks may point to `/settings/*` admin leaves; mitigate with explicit redirects and route tests instead of duplicate shells.
|
||||
- Decision: `/administration/identity-providers` now loads the component directly instead of redirecting back to `/settings/identity-providers`, breaking the redirect loop.
|
||||
- Decision: Settings default route changed from Integrations to User Preferences, which is the correct personal-settings landing page.
|
||||
- Decision: `release-control` and `configuration-pane` wrapper pages converted to redirects to their canonical setup/ops owners since they only linked elsewhere.
|
||||
|
||||
## Next Checkpoints
|
||||
- Complete the route classification matrix.
|
||||
- Freeze the target IA and redirect contract.
|
||||
- Implement personal-settings shell changes only after the ownership map is agreed.
|
||||
- Archived. All tasks shipped.
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
- [DONE] `docs/implplan/SPRINT_20260308_015_FE_orphan_filter_bar_unification.md` - Initial FilterBarComponent adoption batch; audit-log-table and trust-audit-log were later rolled back in sprint `024` to restore lost semantics.
|
||||
- [DONE] `docs-archived/implplan/SPRINT_20260308_024_FE_orphan_revival_regression_remediation.md` - Fixed reviewed orphan-revival regressions: build blockers cleared, canonical evidence-thread navigation restored, audit/trust filter capabilities restored, and fabricated finding evidence removed from mounted hosts.
|
||||
- [DOING] `docs/implplan/SPRINT_20260308_025_FE_safe_cleanup_and_generated_artifacts_prune.md` - Approved UI cleanup to prune committed generated/debug artifacts plus confirmed orphan route and legacy release-control leaves.
|
||||
- [DONE] `docs/implplan/SPRINT_20260308_026_FE_settings_information_architecture_rationalization.md` - Settings IA rationalized: personal-preferences shell with admin/ops rehoming via controlled redirects.
|
||||
|
||||
## Queued Sprint Links
|
||||
- `docs/modules/ui/orphan-revival-batch/README.md` - review index for the orphan shared-component and disconnected-route revival batch.
|
||||
@@ -175,3 +176,11 @@
|
||||
- [DONE] FE-SPL-002 Derive the canonical list-detail shell
|
||||
- [DONE] FE-SPL-003 Adopt the consolidated shell on bounded mounted surfaces
|
||||
- [DONE] FE-SPL-004 Verify and document the consolidation
|
||||
- [DONE] FE-SETIA-001 Audit and classify every settings route
|
||||
- [DONE] FE-SETIA-002 Freeze the target IA and backward-compatibility contract
|
||||
- [DONE] FE-SETIA-003 Build the personal-settings shell and navigation model
|
||||
- [DONE] FE-SETIA-004 Merge overlapping personal preference leaves
|
||||
- [DONE] FE-SETIA-005 Rehome admin, tenant, and operations configuration leaves
|
||||
- [DONE] FE-SETIA-006 Remove or collapse wrapper and alias-only settings pages
|
||||
- [DONE] FE-SETIA-007 Add focused route, nav, and UX regression coverage
|
||||
- [DONE] FE-SETIA-008 Sync docs and ship the IA decision
|
||||
|
||||
@@ -7,6 +7,7 @@ Provide a living plan for UI deliverables, dependencies, and evidence.
|
||||
- Track current sprints under `docs/implplan/SPRINT_*.md` for this module.
|
||||
- Update this file when new scoped work is approved.
|
||||
- Sprint `025` is active for safe cleanup of approved dead leaves and committed generated/debug artifacts in the Web workspace.
|
||||
- Sprint `026` shipped Settings IA rationalization: the Settings shell now owns only personal preferences (appearance, language, layout, AI assistant). All admin, tenant, and operations configuration leaves redirect to their canonical owners (Administration, Setup, Ops). See `docs/features/checked/web/settings-ia-rationalization-ui.md`.
|
||||
|
||||
## Near-term deliverables
|
||||
- No active UI deliverables are currently staged in `docs/implplan`.
|
||||
|
||||
Reference in New Issue
Block a user