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

5.2 KiB

id, title, status, wave, depends_on, plan, requirements, acceptance_criteria, system_design
id title status wave depends_on plan requirements acceptance_criteria system_design
01-split-system-pages Split the System pages done 1
plan.md
REQ-SYSTEM-PAGE-DATA-STORAGE-PAGES-001
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
../../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

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.