Files
kite/.planning/phases/12.1-fix-nextcloud-root-listing-and-sync-visibility/12.1-UAT.md
T
curo1305andClaude Sonnet 4.6 73328eee0b docs(12.1): add phase 12.1 planning artifacts — Nextcloud root listing fix
Plans 01–04, CONTEXT, PATTERNS, RESEARCH, UAT, and .gitkeep for
the fix-nextcloud-root-listing-and-sync-visibility sub-phase.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 20:34:47 +02:00

3.9 KiB

status, phase, source, started, updated
status phase source started updated
complete 12.1-fix-nextcloud-root-listing-and-sync-visibility 12.1-01-SUMMARY.md, 12.1-02-SUMMARY.md, 12.1-03-SUMMARY.md, 12.1-04-SUMMARY.md 2026-06-22T00:00:00Z 2026-06-22T00:00:00Z

Current Test

Current Test

[testing complete]

Tests

1. Nextcloud Root Items Appear in Cloud Browser

expected: Open the DocuVault app, navigate to a configured Nextcloud connection in the cloud browser. The root folder loads and shows its actual contents (folders and/or files) in the file grid — not empty, not an error. result: pass

2. Cloud Items Show Correct Type Icons

expected: In the cloud browser, folders appear with a folder icon and files appear with a file icon. No item has a wrong or missing type indicator. (This applies to any cloud provider — Nextcloud, WebDAV, Google Drive, OneDrive.) result: pass

3. Folder Navigation via Click

expected: Click a folder in the cloud browser. The view navigates into that folder and displays its contents. This should work even for providers like OneDrive where folder IDs are opaque strings (not paths). The URL/route updates to reflect the new folder. result: pass

4. Breadcrumb Shows Navigation Lineage

expected: After clicking into a subfolder (or several levels deep), a breadcrumb bar shows the path taken (e.g., "Root > Documents > 2026"). Clicking any breadcrumb segment navigates back to that level correctly — contents reload for that folder. result: pass

5. Warning State on Incomplete Listing (Freshness)

expected: If the cloud provider returns a partial/incomplete listing (network issue, timeout, provider-side limit), the UI should show a warning/caution indicator — NOT a "fresh" or "synced" indicator. Previously cached items remain visible during the warning state rather than disappearing. result: skipped reason: Requires injecting a mid-call failure into the backend to trigger complete=False. Covered by 9 automated tests (test_incomplete_listing_never_marks_folder_fresh, test_browse_complete_false_never_sets_fresh, etc.) — manual trigger not worth patching production code.

6. Freshness Timestamp Comes from Server

expected: The "last refreshed" or "last synced" timestamp shown in the cloud browser UI matches the server-reported time — it does NOT jump to the current browser clock time on every page load. If the server says "last synced 10 minutes ago," the UI reflects that. result: issue reported: "All 'modified' rows are empty and just with a '-' filled. The native cloud storage browser does show a modified time." severity: major

7. Test Suite Passes (Backend + Frontend)

expected: Running cd backend && pytest -v passes all tests (excluding the pre-existing test_extract_docx failure). Running cd frontend && npm test or npm run test:unit passes all 376 frontend tests with 0 failures. result: pass

Summary

total: 7 passed: 5 issues: 1 pending: 0 skipped: 1 blocked: 0

Gaps

  • truth: "Cloud browser displays per-item modification timestamps supplied by the provider" status: failed reason: "User reported: All 'modified' rows are empty and just with a '-' filled. The native cloud storage browser does show a modified time." severity: major test: 6 root_cause: "StorageBrowser.vue renders formatDate(folder.created_at) and formatDate(file.created_at) (lines 170, 239). Cloud items have modified_at (not created_at) — the field exists in CloudItemOut and is mapped by the backend, but the template reads the wrong key." artifacts:
    • path: "frontend/src/components/storage/StorageBrowser.vue" issue: "Lines 170 and 239 use created_at; cloud items populate modified_at instead"
    • path: "backend/api/cloud/schemas.py" issue: "CloudItemOut.modified_at exists and is correctly populated — no backend change needed" missing:
    • "StorageBrowser must render modified_at for cloud items (prop or computed field)" debug_session: ""