Files
kandev/docs/plans/system-data-storage-page-split/task-01-split-system-pages.md
T
2026-09-04 00:37:41 +00:00

133 lines
5.2 KiB
Markdown

---
id: "01-split-system-pages"
title: "Split the System pages"
status: done
wave: 1
depends_on: []
plan: "plan.md"
requirements:
- REQ-SYSTEM-PAGE-DATA-STORAGE-PAGES-001
acceptance_criteria:
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.1
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.2
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.3
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.4
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.5
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.6
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.7
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.8
- AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.9
system_design:
- ../../specs/system-page/system-design/system-data-storage-pages.md
---
# Task 01: Split the System Pages
## Summary
Create direct `Data & Logs` and `Storage` routes. Update navigation, discovery,
localization, unit tests, and Playwright coverage as one vertical change.
## In scope
- Remove storage maintenance from the Data and Logs content component.
- Render storage maintenance directly on `/settings/system/storage`.
- Add the Storage route to the System menu, breadcrumbs, and discovery catalog.
- Update the Data and Logs description in every locale.
- Move every storage-focused Playwright flow to the Storage route.
- Make authenticated role tests exercise both owning pages.
- Preserve legacy redirects and exact discovery targets.
## Out of scope
- Backend or API changes.
- Storage policy or cleanup behavior changes.
- Public operations text and screenshots.
## Acceptance
- Each route renders only its specified operational sections.
- Desktop and phone navigation open both routes directly.
- Storage save, permission, action, and containment tests pass on the Storage
route.
## Verification
```bash
pnpm exec vitest run components/settings/system/system-route-copy.test.ts components/settings/system/system-invisible-copy.test.tsx components/app-sidebar/sections/settings/settings-nav-copy.test.ts components/app-sidebar/sections/settings/settings-tree.test.ts lib/settings-discovery/catalog.test.ts src/settings-routes.test.ts
pnpm run i18n:check
pnpm e2e:run --project chromium tests/system/sidebar-navigation.spec.ts tests/system/database-page.spec.ts tests/system/backups-page.spec.ts tests/system/logs-page.spec.ts tests/system/storage-maintenance.spec.ts
pnpm e2e:run --project auth tests/auth/system-data-storage-member-gating.spec.ts
pnpm e2e:run --project mobile-chrome tests/system/mobile-database-page.spec.ts tests/system/mobile-logs-bundle.spec.ts tests/system/mobile-storage-maintenance.spec.ts tests/auth/mobile-system-data-storage-member-gating.spec.ts
pnpm e2e:run --project containers tests/docker/storage-maintenance.spec.ts
```
Run these commands from `apps/web`.
## Files likely touched
- `apps/web/components/settings/system/data-logs-settings.tsx`
- `apps/web/components/settings/system/system-route-copy.test.ts`
- `apps/web/components/settings/system/system-invisible-copy.test.tsx`
- `apps/web/components/settings/settings-breadcrumb-labels.ts`
- `apps/web/components/app-sidebar/sections/settings/settings-menu-sections.ts`
- `apps/web/components/app-sidebar/sections/settings/settings-nav-copy.test.ts`
- `apps/web/components/app-sidebar/sections/settings/settings-tree.test.ts`
- `apps/web/lib/settings-discovery/catalog/system.ts`
- `apps/web/lib/settings-discovery/catalog.test.ts`
- `apps/web/src/settings-routes.tsx`
- `apps/web/src/settings-routes.test.ts`
- `apps/web/src/locales/*/system.json`
- `apps/web/e2e/tests/system/*.spec.ts`
- `apps/web/e2e/tests/auth/*data-storage-member-gating*.ts`
- `apps/web/e2e/tests/docker/storage-maintenance.spec.ts`
- `apps/web/e2e/tests/task/unarchive-storage-recovery.spec.ts`
## Dependencies
None.
## Risks
- A broad route replacement can move database or log tests to Storage by
mistake. Classify each reference before editing it.
- The auth tests use manual browser contexts. Both route visits must retain the
same authenticated context.
- The Storage route must keep the route-scoped save contributor mounted until
the navigation guard resolves.
## Parallelism
`sequential`
## Inputs
- `REQ-SYSTEM-PAGE-DATA-STORAGE-PAGES-001` and all acceptance criteria.
- `docs/specs/system-page/system-design/system-data-storage-pages.md`.
- ADRs 0045, 0046, and 2026-08-04-navigation-manifest-boundaries.
- Existing System route, discovery, settings menu, and Playwright patterns.
## Results
The route composition, System navigation,
breadcrumbs, discovery ownership, localized copy, unit tests, and desktop,
authenticated, phone, and container-backed Playwright references were updated.
Verification passed:
- Focused Vitest command: 107 tests passed.
- `pnpm run typecheck` passed.
- Full `pnpm run lint` passed.
- `pnpm run i18n:check` passed.
- Desktop Playwright command: 18 tests passed.
- Authenticated role command: 2 tests passed.
- Phone Playwright command: 10 tests passed.
- `python3 scripts/lint-spec-files.py --all` and `git diff --check` passed.
The exact container Playwright command was attempted, but Docker is unavailable
in this environment, so that suite could not run.
PR review follow-up added an explicit pseudo-locale assertion for
`system:storageTitle` and clarified the system-design wording for immediate
commands. The focused remediation test passed with 12 tests.