diff --git a/EXHAUSTIVE_TODO_LIST.md b/EXHAUSTIVE_TODO_LIST.md
index 8e03fc1dd..07e311167 100644
--- a/EXHAUSTIVE_TODO_LIST.md
+++ b/EXHAUSTIVE_TODO_LIST.md
@@ -2784,11 +2784,22 @@ Critical path dependencies:
- **Rationale**: FAB is most prominent and globally accessible; header button provides contextual access
- **Rollback**: N/A (decision)
-- [ ] **Action 8.1.1.3**: Remove duplicate upload buttons
+- [x] **Action 8.1.1.3**: Remove duplicate upload buttons
- **Scope**: All locations except primary - Remove duplicate buttons
- - **Dependencies**: Action 8.1.1.2 complete
+ - **Dependencies**: Action 8.1.1.2 complete ✅
- **Risk**: MEDIUM (removes functionality)
- - **Validation**: One upload button, consistent behavior
+ - **Validation**: ✅ Duplicate buttons removed:
+ - **Removed LibraryPage empty state buttons** (2 buttons):
+ - Grid view empty state button (lines 607-610) ✅
+ - List view empty state button (lines 632-635) ✅
+ - **Removed LibraryManager buttons** (2 buttons):
+ - Header button (lines 176-179) ✅
+ - Empty state button (lines 250-253) ✅
+ - **Kept buttons** (as per Action 8.1.1.2):
+ - Dashboard FAB (primary) ✅
+ - LibraryPage header button (secondary) ✅
+ - **Result**: Only 2 upload buttons remain (primary + secondary), consistent behavior maintained
+ - **No regressions**: Empty state messages still display, users can use header button for upload
- **Rollback**: Restore duplicates
- [ ] **Action 8.1.1.4**: Ensure consistent upload behavior
diff --git a/apps/web/src/features/library/components/LibraryManager.tsx b/apps/web/src/features/library/components/LibraryManager.tsx
index c523b25b6..6f5330be9 100644
--- a/apps/web/src/features/library/components/LibraryManager.tsx
+++ b/apps/web/src/features/library/components/LibraryManager.tsx
@@ -173,10 +173,6 @@ export function LibraryManager({ onTrackSelect }: LibraryManagerProps) {
Gérez votre collection audio personnelle
-