4.8 KiB
created, status, requirements, system_design, legacy_specs
| created | status | requirements | system_design | legacy_specs | ||||
|---|---|---|---|---|---|---|---|---|
| 2026-09-03 | implemented |
|
|
|
Implementation Plan: System Data and Storage Page Split
Overview
This change creates separate Data & Logs and Storage pages. The first work
order changes routes, navigation, discovery, copy, and browser coverage. The
second work order updates public operations documentation and screenshots.
Scope
In scope
- Keep Database, Backups, and Logs on
/settings/system/data-storage. - Render storage maintenance on
/settings/system/storage. - Add a direct Storage entry to desktop and phone settings navigation.
- Reassign storage discovery targets to the Storage page.
- Preserve legacy redirects and storage save protection.
- Update all affected locales, tests, operations text, and screenshots.
Out of scope
- Backend, API, database, or storage policy changes.
- New settings navigation levels or responsive primitives.
- Separate Database, Backups, or Logs pages.
- A rename of the existing
Data & Logspath.
Technical approach
Route and component composition
Rename the combined content component to match its remaining Data and Logs
scope. Remove StorageMaintenanceSettings and its separator from that
component.
Replace the Storage redirect in apps/web/src/settings-routes.tsx with a
SystemRouteShell that renders StorageMaintenanceSettings. Reuse the existing
Storage title and description keys.
Navigation and discovery
Add SYSTEM_STORAGE_SETTINGS_HREF to the System discovery catalog. Add a
Storage page definition and reparent every storage section to it. Keep existing
storage target IDs stable.
Add the Storage row to SETTINGS_MENU_SECTIONS. Add the translated breadcrumb
mapping for the storage path segment. Update route and catalog unit tests.
Localization
Change dataStoragePageDescription so that it names database statistics,
backups, and server logs only. Update every locale. Use pnpm run i18n:zh-hant
for the Traditional Chinese catalogs.
Compatibility
Keep the Database, Backups, and Logs redirects unchanged. Keep the current
Data & Logs URL and discovery page identity unchanged.
Public documentation
Update docs/public/operations.md to point storage tasks to the Storage page.
Recapture the four affected screenshots with isolated disposable data. The
screenshots must show the Storage route and must not expose developer data.
Tests
AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.1through.7: route, menu, breadcrumb, discovery, and copy unit tests.AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.9: existing storage policy and role gating tests after route migration.
E2E tests
AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.1through.5: desktop System navigation and the Database, Backups, Logs, and Storage page specifications.AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.7through.9: mobile System navigation, storage maintenance, and member gating specifications.AC-SYSTEM-PAGE-DATA-STORAGE-PAGES-001.9: authenticated and container-backed storage maintenance specifications.
Work orders
Verification results
Task 01 is done. Focused unit tests passed with 107 tests, typecheck passed, full web lint passed, the i18n check passed, and the desktop, authenticated, and phone Playwright suites passed with 18, 2, and 10 tests respectively. The container-backed storage suite could not start because Docker is unavailable in the environment.
Task 02 is done. Public documentation tests and validation passed, and the four Storage screenshots were recaptured from an isolated Playwright fixture with fictional paths and no developer data. A landing-repository capture target was not configured, so the documented screenshot fallback used the isolated native Playwright capture.
The PR review follow-up added an explicit pseudo-locale assertion for the Storage title and clarified the immediate command wording in the system design. The focused remediation test passed.
Risks
- Tests that use
/settings/system/data-storagefor storage can pass against the wrong route unless every reference is classified by feature. - Auth tests currently assert backup and storage controls on one page. They must exercise both routes in the same role context.
- Existing operations screenshots show the
Data & Logsbreadcrumb. They must be recaptured after the route split. - Discovery parent changes can break exact-target navigation if hrefs and parent identities do not change together.