6.3 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, duration, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | duration | completed | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 05-cloud-storage-backends | 08 | ui |
|
|
|
|
|
|
7min | 2026-05-29 |
Phase 5 Plan 08: Cloud Storage Sidebar Tree Summary
CloudProviderTreeItem and CloudFolderTreeItem components plus AppSidebar Cloud Storage section wiring active connections to a collapsible lazy-load folder tree
Performance
- Duration: 7 min
- Started: 2026-05-29T06:26:41Z
- Completed: 2026-05-29T06:33:41Z
- Tasks: 2 (automated) + 1 (human checkpoint — pending)
- Files modified: 4
Accomplishments
- Added
getCloudFolders(provider, folderId)export tofrontend/src/api/client.js— callsGET /api/cloud/folders/{provider}/{folderId} - Created
CloudProviderTreeItem.vueusing Composition API (script setup): expand/collapse arrow, provider cloud icon with per-provider color (google_drive→blue,onedrive→sky,nextcloud→orange,webdav→gray), lazy-loads children viagetCloudFolders(provider, 'root')on first expand, loading state ("Loading…") and error state ("Failed to load — tap to retry") per UI-SPEC Surface 5 - Created
CloudFolderTreeItem.vue: recursively renders itself for nested sub-folders; expand arrow only shown whenfolder.is_dir === true; lazy-loads children on expand; navigates to/cloud/{provider}/{folder.id}on click; depth padding viadepth * 12 px - Extended
AppSidebar.vuewith Cloud Storage collapsible section between Folders and Topics: importsuseCloudConnectionsStore,CloudProviderTreeItem; addscloudExpandedref (default true),activeCloudConnectionscomputed (filterstatus === 'ACTIVE'),loadingCloudConnectionscomputed; callscloudConnectionsStore.fetchConnections()on mount; renders empty state "No cloud storage connected" or oneCloudProviderTreeItemper ACTIVE connection
Task Commits
- Task 1: Cloud tree components + API function -
34b0593(feat) - Task 2: AppSidebar Cloud Storage section -
98576ac(feat)
Files Created/Modified
frontend/src/components/cloud/CloudProviderTreeItem.vue— Provider root node in sidebar tree (created)frontend/src/components/cloud/CloudFolderTreeItem.vue— Cloud sub-folder recursive node (created)frontend/src/api/client.js— AddedgetCloudFoldersfunctionfrontend/src/components/layout/AppSidebar.vue— Added Cloud Storage section; imported CloudProviderTreeItem and useCloudConnectionsStore
Decisions Made
@pinia/testingnot used — store access viauseCloudConnectionsStore()in the component; same composition pattern as all other stores in the projectcloudConnectionsStore.fetchConnections()is called withoutawaitinonMountedto avoid serializing with folder/shared-with-me loads; connections appear as soon as the API responds in the background- Cloud Storage label uses
<a href="/settings">(plain anchor) rather than<router-link>to prevent the router-linknav-link-activeclass from activating when on/settings
Deviations from Plan
None — plan executed exactly as written.
Known Stubs
None. All components are wired to live data via useCloudConnectionsStore and getCloudFolders. The "No cloud storage connected" state is correct zero-state when no connections exist.
Threat Surface Scan
No new network endpoints introduced. Frontend-only changes. Threat T-05-08-04 (only ACTIVE connections shown in sidebar) is implemented correctly — activeCloudConnections filters to status === 'ACTIVE'.
Self-Check: PASSED
Files verified present:
frontend/src/components/cloud/CloudProviderTreeItem.vue: FOUNDfrontend/src/components/cloud/CloudFolderTreeItem.vue: FOUNDfrontend/src/api/client.js: FOUND (with getCloudFolders)frontend/src/components/layout/AppSidebar.vue: FOUND (with CloudProviderTreeItem, cloudExpanded, useCloudConnectionsStore, Cloud Storage section)
Commits verified:
34b0593: feat(05-08): add cloud tree components and getCloudFolders API function — FOUND98576ac: feat(05-08): add Cloud Storage collapsible section to AppSidebar — FOUND
Build verification: npm run build → exit 0, 191 kB bundle
Human Checkpoint Pending
Plan 05-08 contains a checkpoint:human-verify task (gate="blocking"). The automated tasks are complete. The checkpoint details are presented to the user below.
Phase: 05-cloud-storage-backends Completed (automated tasks): 2026-05-29