6.0 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-timeout-feedback | Concise temporary-folder timeout feedback | done | 1 | plan.md |
|
|
|
Task 01: Concise temporary-folder timeout feedback
Summary
Replace repeated deadline messages with one localized explanation in the expanded temporary-folder row. Preserve sampled bytes, partial state, skipped counts, and bounded non-deadline diagnostics.
In scope
- TDD tests for repeated and mixed joined errors, multiple roots, counts, and cancellation.
- Normalize warning leaves at the tempstore projection boundary.
- Localize the existing deadline reason and normalize older warning payloads in the resource projection.
- Desktop and mobile browser assertions for bounded timeout feedback.
- Update the temporary-folder explanation in public operations guidance during implementation.
Out of scope
Bars, sorting, new scanner workers, scan deadline changes, scan-performance work, cleanup, and new API fields.
Acceptance
- Deadline results retain sampled bytes and counts, with at most ten distinct non-deadline diagnostic examples.
- Both new and older snapshots show one localized timeout explanation. Mixed joined errors retain unrelated diagnostics.
- Desktop and phone users can inspect partial details without repeated deadline text or horizontal overflow.
ASCII UI preview
UI-01 and UI-02 excerpt: expanded temporary-folder details at Settings > System > Storage. See the combined preview. Bars belong to Task 02.
Desktop:
System temporary folders 51.08 GB ^
Read-only. This footprint can overlap counted categories.
/tmp: 51.08 GB | Partial | 1,015 entries skipped
Scan timed out. Showing partial usage.
<bounded distinct diagnostic examples>
Phone:
System temporary folders ^
51.08 GB
Read-only. This footprint can
overlap counted categories.
/tmp: 51.08 GB
Partial | 1,015 entries skipped
Scan timed out.
Showing partial usage.
Maps to AC-SYSTEM-PAGE-STORAGE-MAINTENANCE-003.6, .8, .10. Existing inline expansion and one page scroll owner remain required. Copy and paths wrap within the row. Example numbers and spacing are illustrative.
Verification
Run from the repository root. Install workspace dependencies once before the first pnpm command. Use deterministic injected scanner results instead of waiting for the production deadline. Write the focused regression tests first and observe their failures before changing production logic.
(cd apps && pnpm install --frozen-lockfile)
(cd apps/backend && go test ./internal/system/storage/tempstore ./internal/system/storage/filescan)
(cd apps/web && pnpm test components/settings/system/storage/storage-overview-card.test.tsx components/settings/system/storage/storage-totals.test.ts)
(cd apps/web && pnpm exec eslint components/settings/system/storage/storage-overview-resources.ts components/settings/system/storage/storage-overview-card.test.tsx)
(cd apps/web && pnpm run typecheck)
(cd apps/web && pnpm run i18n:zh-hant)
(cd apps/web && pnpm run i18n:check)
(cd apps/web && pnpm run i18n:ratchet)
(cd apps/web && pnpm e2e:run --project chromium tests/system/storage-temporary-folders.spec.ts)
(cd apps/web && pnpm e2e:run --project mobile-chrome tests/system/mobile-storage-temporary-folders.spec.ts)
node --test scripts/validate-public-docs.test.mjs
node scripts/validate-public-docs.mjs
python3 scripts/list-docs.py validate
python3 scripts/lint-spec-files.py --all
git diff --check
Before the final checks, add translations in en, pt-pt, zh-cn, and ja, then generate zh-hk and zh-tw.
Extend existing temporary-folder browser cases with a controlled deadline payload and one unrelated warning.
Assert one explanation, retained sampled size/counts, wrapped long paths, and no raw deadline repetitions.
Capture and inspect the desktop and phone detail region through prCapture.
Files likely touched
apps/backend/internal/system/storage/tempstore/provider.goapps/backend/internal/system/storage/tempstore/provider_test.goapps/web/components/settings/system/storage/storage-overview-resources.tsapps/web/components/settings/system/storage/storage-overview-card.test.tsxapps/web/src/locales/{en,pt-pt,zh-cn,zh-hk,zh-tw,ja}/system.jsonapps/web/e2e/helpers/storage-maintenance.tsapps/web/e2e/tests/system/storage-temporary-folders.spec.tsapps/web/e2e/tests/system/mobile-storage-temporary-folders.spec.tsdocs/public/operations.md
Dependencies
None.
Risks
errors.Ison a joined error matches any deadline leaf. Do not discard the entire mixed error.- Old cached warnings can contain many newline-separated deadline messages in one string.
- Existing cancellation and strict scanner consumers must retain their behavior.
Parallelism
sequential. This order shares frontend and browser helper files with Task 02.
Inputs
- Requirements, section 003.
- Design, Deadline feedback.
- Existing
TestAnalyzeTemporaryDeadlineReturnsPartialSampleand temporary-folder component/browser cases. - Scoped backend and web
AGENTS.md, plus TDD, E2E, mobile-parity, and docs-maintainer skills.
Results
go test ./internal/system/storage/tempstore ./internal/system/storage/filescan: passed.- Focused Storage component tests: passed, including the localized timeout and retained diagnostics case.
- Existing desktop and mobile temporary-folder browser cases: passed with one timeout explanation, retained partial values and counts, unrelated diagnostics, and no horizontal overflow.
- Public operations guidance now documents partial timeout samples and their non-cleanup meaning.