--- phase: 10-ux-interaction plan: 03 type: execute wave: 0 depends_on: [] files_modified: - frontend/src/components/ui/BreadcrumbBar.vue - frontend/src/components/ui/__tests__/BreadcrumbBar.test.js autonomous: true requirements: [UX-12] must_haves: truths: - "BreadcrumbBar renders the rootLabel as the first clickable segment when showRoot is true" - "BreadcrumbBar does NOT render the root segment when showRoot is false (admin/settings views)" - "The last segment is always rendered as plain non-clickable text" - "Segments without an id render as plain text (admin static segments)" - "Clicking an intermediate segment emits navigate(segment.id); clicking root emits navigate(null)" - ">4 segments collapse to first + ellipsis + last two" artifacts: - path: "frontend/src/components/ui/BreadcrumbBar.vue" provides: "Shared breadcrumb component used by file manager, cloud, admin, settings views" - path: "frontend/src/components/ui/__tests__/BreadcrumbBar.test.js" provides: "BreadcrumbBar unit tests" key_links: - from: "BreadcrumbBar.vue" to: "AppIcon.vue" via: "import for chevronRight separator" pattern: " Create `frontend/src/components/ui/BreadcrumbBar.vue` — a shared breadcrumb component that generalizes `FolderBreadcrumb.vue` to also serve admin, settings, and topics views. The existing `FolderBreadcrumb.vue` will be deleted in Wave 1 (plan 10-06) after BreadcrumbBar is wired everywhere. Purpose: Per D-11/D-12/D-13, every view computes its own `segments` array. Admin views (e.g. `Admin › Users`) and settings (`Settings › Account`) need static segments without a "Home" root. File manager and cloud views use folder store breadcrumb data with a "Home" or "Cloud" root. Output: `BreadcrumbBar.vue` (Options API, props segments/rootLabel/showRoot, emits navigate) + Vitest unit tests adapted from the existing FolderBreadcrumb 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/folders/FolderBreadcrumb.vue @frontend/src/components/folders/__tests__/FolderBreadcrumb.test.js Per D-11, D-12, D-13 (CONTEXT.md): - Props: - `segments` (Array, default []) — array of `{ id?, label }` objects - Items without `id` render as plain non-clickable text (admin static segments) - Last item is ALWAYS plain non-clickable text regardless of `id` - `rootLabel` (String, default 'Home') — text for the root button when showRoot=true - `showRoot` (Boolean, default true) — when false, omit the root button entirely - Emits: `navigate` with `segment.id` (intermediate click) or `null` (root click) - Last segment: plain ``, no click handler - >4 segments: collapse pattern `[first, {id:'ellipsis', label:'…'}, ...last_two]` Reference implementation (FolderBreadcrumb.vue): - Uses `