---
phase: 10
plan: 12
subsystem: frontend/ui
tags: [refactor, icons, svg, appicon, code-05]
dependency_graph:
requires: [10-01]
provides: [CODE-05-complete]
affects: [all-vue-components]
tech_stack:
patterns: [AppIcon component, named icon registry, stroke icon system]
key_files:
modified:
- frontend/src/components/ui/SearchableModelSelect.vue
- frontend/src/components/settings/SettingsCloudTab.vue
- frontend/src/components/settings/SettingsAccountTab.vue
- frontend/src/components/cloud/CloudProviderTreeItem.vue
- frontend/src/components/cloud/CloudFolderTreeItem.vue
- frontend/src/components/cloud/CloudCredentialModal.vue
- frontend/src/components/auth/TotpEnrollment.vue
- frontend/src/views/CloudStorageView.vue
- frontend/src/views/SettingsView.vue
- frontend/src/views/AccountView.vue
- frontend/src/views/DocumentView.vue
- frontend/src/views/SharedView.vue
- frontend/src/views/admin/AdminAiView.vue
- frontend/src/views/admin/AdminUsersView.vue
decisions:
- Clipboard icons in TotpEnrollment and BackupCodesDisplay kept as inline SVG — path uses Heroicons v2 stroke-width=1.5 variant not in AppIcon registry
- Loading spinners in CloudCredentialModal, DocumentPreviewModal, UploadProgress kept — they use circle+fill elements, not stroke icons
- BackupCodesDisplay.vue kept as-is — no matching AppIcon for its clipboard path
metrics:
duration: ~25 minutes
completed: 2026-06-16
tasks: 2
files: 14
---
# Phase 10 Plan 12: SVG-to-AppIcon Migration (Tasks 3+4) Summary
**One-liner:** Completed CODE-05 SVG migration — all 14 remaining cloud/settings/view files migrated from inline stroke SVGs to ``, leaving zero migratable inline SVGs in the codebase.
## What Was Built
CODE-05 completion: replaced every remaining inline `