--- phase: 10-ux-interaction plan: 06 type: execute wave: 1 depends_on: [10-02, 10-03, 10-04, 10-05] files_modified: - frontend/src/components/storage/StorageBrowser.vue - frontend/src/views/FileManagerView.vue - frontend/src/views/CloudFolderView.vue - frontend/src/components/folders/FolderBreadcrumb.vue - frontend/src/components/folders/__tests__/FolderBreadcrumb.test.js - frontend/src/components/storage/__tests__/StorageBrowser.skeleton.test.js autonomous: true requirements: [UX-02, UX-01, UX-10, UX-12] must_haves: truths: - "StorageBrowser shows 5+ animated skeleton rows when loading=true (no Loading… text)" - "Empty file list renders with the appropriate icon/headline/subtext per context (root, folder, search)" - "BreadcrumbBar replaces FolderBreadcrumb in StorageBrowser; FolderBreadcrumb.vue is deleted in this plan" - "FileManagerView maps foldersStore.breadcrumb to [{id, label}] before passing as segments" - "CloudFolderView maps its breadcrumb to [{id, label}] before passing as segments" - "FileManagerView toast wiring fires on document delete and document move success/failure" artifacts: - path: "frontend/src/components/storage/StorageBrowser.vue" provides: "Updated with skeleton + EmptyState + BreadcrumbBar" - path: "frontend/src/views/FileManagerView.vue" provides: "Updated breadcrumb mapping + toast call sites" - path: "frontend/src/views/CloudFolderView.vue" provides: "Updated breadcrumb mapping" key_links: - from: "StorageBrowser.vue" to: "BreadcrumbBar.vue" via: "import + " pattern: "import BreadcrumbBar" - from: "FileManagerView.vue" to: "useToastStore" via: "show() called in doMove and doDeleteDoc" pattern: "useToastStore" --- Wire the Wave 0 foundation components into `StorageBrowser.vue`, `FileManagerView.vue`, and `CloudFolderView.vue`. This plan completes UX-02 (skeleton rows), the StorageBrowser parts of UX-01 (EmptyState), the file-manager parts of UX-12 (BreadcrumbBar swap and FolderBreadcrumb deletion), and the FileManagerView parts of UX-10 (toast call sites). Per CLAUDE.md "no dead code", FolderBreadcrumb.vue and its test file are deleted in the SAME commit as the BreadcrumbBar swap. Output: - StorageBrowser: 5-row skeleton (UX-02), three EmptyState variants (root/folder/search), import swap FolderBreadcrumb → BreadcrumbBar - FileManagerView: breadcrumb `{id, name}` → `{id, label}` mapping, toast.show() on doMove + doDeleteDoc success/error - CloudFolderView: breadcrumb mapping + BreadcrumbBar with rootLabel='Cloud' - FolderBreadcrumb.vue + FolderBreadcrumb.test.js DELETED - StorageBrowser.skeleton.test.js stub promoted to real tests @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md @CLAUDE.md @.planning/phases/10-ux-interaction/10-CONTEXT.md @.planning/phases/10-ux-interaction/10-RESEARCH.md @.planning/phases/10-ux-interaction/10-PATTERNS.md @frontend/src/components/storage/StorageBrowser.vue @frontend/src/views/FileManagerView.vue @frontend/src/views/CloudFolderView.vue @frontend/src/components/folders/FolderBreadcrumb.vue @frontend/src/components/ui/EmptyState.vue @frontend/src/components/ui/BreadcrumbBar.vue @frontend/src/stores/toast.js **StorageBrowser already uses `