# DocuVault v0.2 Requirements — Archive

**Milestone:** v0.2 — UI Overhaul and Optimization
**Archived:** 2026-06-17
**Total requirements:** 40 — all satisfied

---

## CODE — Codebase Quality

- [x] **CODE-01**: Backend `api/admin.py` decomposed into `api/admin/` package — Phase 8, Complete
- [x] **CODE-02**: `api/documents.py` decomposed into `api/documents/` package — Phase 8, Complete
- [x] **CODE-03**: `api/auth.py` decomposed into `api/auth/` package — Phase 8, Complete
- [x] **CODE-04**: Frontend `api/client.js` decomposed into domain modules; barrel re-export — Phase 8, Complete
- [x] **CODE-05**: All inline SVG blocks replaced with `<AppIcon name="..." />`; path data centralized — Phase 10, Complete
- [x] **CODE-06**: Tailwind `safelist` configured for all dynamic class name patterns in `formatters.js` — Phase 9, Complete
- [x] **CODE-07**: All unreferenced files, components, stores, and unused imports deleted — Phase 11, Complete
- [x] **CODE-08**: No duplicated Pydantic model definitions; shared schemas in dedicated modules — Phase 8, Complete
- [x] **CODE-09**: No WHAT comments remain; WHY-only policy enforced across all touched files — Phase 9, Complete

## ADMIN — Admin Panel

- [x] **ADMIN-08**: Admin panel at `/admin/*`; `AdminLayout.vue` as route component; `AdminView.vue` deleted — Phase 9, Complete
- [x] **ADMIN-09**: Admin sidebar: Overview, Users, Quotas, AI Config, Audit Log. No "Back to app" link (D-06 decision) — Phase 9, Complete
- [x] **ADMIN-10**: Deep-linkable URLs (`/admin/users`, `/admin/quotas`, `/admin/ai`, `/admin/audit`); back button works — Phase 9, Complete
- [x] **ADMIN-11**: Admin overview page with user count, platform storage, doc status breakdown, last 10 audit entries — Phase 9, Complete
- [x] **ADMIN-12**: `to.matched.some(r => r.meta.requiresAdmin)` guard on all `/admin/*` routes — Phase 9, Complete

## UX — UX and Interaction

- [x] **UX-01**: `EmptyState.vue` in all zero-content contexts; no plain "No items" text remains — Phase 10, Complete
- [x] **UX-02**: `StorageBrowser` displays 5-col `animate-pulse` skeleton grid rows during loading — Phase 10, Complete
- [x] **UX-03**: Sidebar folder tree and topics list display skeleton placeholders during loading — Phase 10, Complete
- [x] **UX-04**: Admin user table and audit log table display skeleton table rows during loading — Phase 10, Complete
- [x] **UX-05**: Pressing `/` when no input is focused moves focus to the search bar — Phase 10, Complete
- [x] **UX-06**: Pressing `Escape` closes any open modal and clears active search — Phase 10, Complete
- [x] **UX-07**: Pressing `U` when no input is focused triggers the file upload picker — Phase 10, Complete
- [x] **UX-08**: Pressing `N` when no input is focused starts the new folder inline input — Phase 10, Complete
- [x] **UX-09**: OS drag-onto-browser shows full-screen overlay; releasing uploads files — Phase 10, Complete
- [x] **UX-10**: Toast notification system (auto-dismiss 4s, stacking, non-blocking) for upload/delete/share/rename — Phase 10, Complete
- [x] **UX-11**: Drag-to-move document onto folder row with `ring-2 ring-inset ring-amber-300` drop highlight — Phase 10, Complete
- [x] **UX-12**: Single shared `BreadcrumbBar.vue` across all views; updates on every route change — Phase 10, Complete
- [x] **UX-13**: All dropdowns use `Teleport + getBoundingClientRect`; no viewport-edge clipping — Phase 10, Complete
- [x] **UX-14**: Inline "New" folder button removed from `AppSidebar.vue`; folder creation in file manager only — Phase 10, Complete

## VISUAL — Visual Design

- [x] **VISUAL-01**: Consistent spacing scale; no arbitrary `px-[N]` values or inline `style` margins — Phase 11, Complete
- [x] **VISUAL-02**: `@tailwindcss/forms` plugin configured; cross-browser form element baseline styling — Phase 11, Complete
- [x] **VISUAL-03**: All interactive elements have consistent hover, `focus-visible:` rings, and active states — Phase 11, Complete
- [x] **VISUAL-04**: Consistent typography scale: one heading size per level, one body size, one label/caption size — Phase 11, Complete

## RESP — Responsive Layout

- [x] **RESP-01**: Sidebar hidden below `lg` (1024px); hamburger opens slide-in overlay drawer — Phase 11, Complete
- [x] **RESP-02**: Document list hides Size column below `md`, Modified below `sm`; compact icon toolbar below `sm` — Phase 11, Complete (11-07 gap closure)
- [x] **RESP-03**: Inline icon action buttons ≥36×36px touch target on viewports below `md` — Phase 11, Complete
- [x] **RESP-04**: All modal dialogs scrollable on viewports below 640px — Phase 11, Complete
- [x] **RESP-05**: Admin layout has same responsive behavior (hamburger, drawer) as user layout — Phase 11, Complete

## PERF — Performance and Stack

- [x] **PERF-01**: Frontend dependencies bumped: `vue@^3.5.0`, `vite@^8.0.16`, `@vueuse/core@^14.3.0`, `sortablejs`, `@tailwindcss/forms`, `rollup-plugin-visualizer` — Phase 8, Complete
- [x] **PERF-02**: Bundle baseline and post-optimization reports committed to `.planning/` — Phase 11, Complete (−81 kB / −30.6%)
- [x] **PERF-03**: All non-initial-render routes lazy-loaded; admin views explicitly lazy-loaded — Phase 11, Complete

---

## Traceability

| REQ-ID | Phase | Status |
|--------|-------|--------|
| PERF-01 | Phase 8 | ✓ Complete |
| CODE-01 | Phase 8 | ✓ Complete |
| CODE-02 | Phase 8 | ✓ Complete |
| CODE-03 | Phase 8 | ✓ Complete |
| CODE-04 | Phase 8 | ✓ Complete |
| CODE-08 | Phase 8 | ✓ Complete |
| ADMIN-08 | Phase 9 | ✓ Complete |
| ADMIN-09 | Phase 9 | ✓ Complete (D-06: admin-only, no Back-to-app) |
| ADMIN-10 | Phase 9 | ✓ Complete |
| ADMIN-11 | Phase 9 | ✓ Complete |
| ADMIN-12 | Phase 9 | ✓ Complete |
| CODE-06 | Phase 9 | ✓ Complete |
| CODE-09 | Phase 9 | ✓ Complete |
| UX-01 | Phase 10 | ✓ Complete |
| UX-02 | Phase 10 | ✓ Complete |
| UX-03 | Phase 10 | ✓ Complete |
| UX-04 | Phase 10 | ✓ Complete |
| UX-05 | Phase 10 | ✓ Complete |
| UX-06 | Phase 10 | ✓ Complete |
| UX-07 | Phase 10 | ✓ Complete |
| UX-08 | Phase 10 | ✓ Complete |
| UX-09 | Phase 10 | ✓ Complete |
| UX-10 | Phase 10 | ✓ Complete |
| UX-11 | Phase 10 | ✓ Complete |
| UX-12 | Phase 10 | ✓ Complete |
| UX-13 | Phase 10 | ✓ Complete |
| UX-14 | Phase 10 | ✓ Complete |
| CODE-05 | Phase 10 | ✓ Complete |
| VISUAL-01 | Phase 11 | ✓ Complete |
| VISUAL-02 | Phase 11 | ✓ Complete |
| VISUAL-03 | Phase 11 | ✓ Complete |
| VISUAL-04 | Phase 11 | ✓ Complete |
| RESP-01 | Phase 11 | ✓ Complete |
| RESP-02 | Phase 11 | ✓ Complete |
| RESP-03 | Phase 11 | ✓ Complete |
| RESP-04 | Phase 11 | ✓ Complete |
| RESP-05 | Phase 11 | ✓ Complete |
| CODE-07 | Phase 11 | ✓ Complete |
| PERF-02 | Phase 11 | ✓ Complete |
| PERF-03 | Phase 11 | ✓ Complete |

*All 40 requirements satisfied. Archive created 2026-06-17.*
