- Created .env.example with all required environment variables
- Documented API, WebSocket, Stream, Upload configurations
- Documented application configuration (name, version)
- Documented debug mode and MSW settings
- Documented optional variables (FCM, Sentry)
- All variables include descriptions and default values
- Helps developers set up the project correctly
- Created .env.example with all required environment variables
- Documented API, WebSocket, Stream, Upload configurations
- Documented application configuration (name, version)
- Documented debug mode and MSW settings
- Documented optional variables (FCM, Sentry)
- All variables include descriptions and default values
- Helps developers set up the project correctly
- Replaced KodoEmptyState in DashboardPage with EmptyState
- Replaced all custom empty states in SearchPage with EmptyState:
- No results found state
- No tracks found state
- No playlists found state
- No users found state
- Start searching state
- All empty states now use the standard EmptyState component
- Consistent UI and behavior across all empty states
- Created useTabVisibility hook to track tab visibility state
- Provides whenVisible(), whenHidden(), onVisible() utilities
- Executes callbacks when visibility changes
- Created useLongRunningOperation hook for managing long-running operations
- Operations can continue when tab is hidden (configurable)
- Provides start(), stop(), isRunning() control functions
- Supports abort controller for cancellation
- Cleanup on unmount
- All hooks are properly typed and documented with examples
- Created useDebouncedCallback hook for debouncing callbacks
- Created useThrottledCallback hook for throttling callbacks
- Created usePreventDoubleClick hook for preventing double-clicks
- All hooks are properly typed and documented with examples
- Components can use these hooks to prevent rapid interactions
- Existing ButtonLoading component already disables buttons during loading
- Added slow request detection with 1 second threshold
- Tracks request timing in request interceptor
- Detects and marks slow requests (> SLOW_REQUEST_THRESHOLD)
- Logs slow requests in dev mode with duration
- Provides utility functions:
- isSlowRequest() - check if request is slow
- getRequestDuration() - get request duration in ms
- Components can use these utilities to show additional loading feedback
- React Query already provides isLoading/isFetching for loading states
- Replaced custom empty state div with EmptyState component
- Added EmptyState import from @/components/ui/empty-state
- Improved empty state UI with icon, title, description, and action button
- Different messages for empty list vs empty search results
- Added upload action button when no tracks (not in search mode)
- Fixed pre-existing errors: added useInfiniteQuery import, fixed tracksData reference
- Edge 1.4: Marked as complete (EmptyState component already exists)
- Edge 1.1 & 1.3: In progress - improved empty state handling
- Removed useLibraryItemsNormalized() - deprecated, no imports found
- Removed useLibraryFavoritesNormalized() - deprecated, no imports found
- Functions were marked @deprecated and only returned empty states
- Migration to React Query completed, these functions no longer needed
- Cleanup 17: In progress - removed deprecated dead code
- Cleanup 5: Remove duplicate chat store - COMPLETE
- Verified stores/chat.ts does not exist (already removed in Action 4.5.1.5)
- Active store is at features/chat/store/chatStore.ts
- All production code uses the feature store location
- Test mocks reference @/stores/chat but this is just a mock path, not actual code
- Removed obsolete TODO in useChat.ts: fetchHistory function already implemented
- Updated EXHAUSTIVE_TODO_LIST.md: Cleanup 14 marked as COMPLETE
- Summary: Fixed 1 TODO, improved 1 TODO, removed 1 obsolete TODO
- Preserved backend-dependent and architectural TODOs per audit recommendations
- Fixed ChatRoom.tsx: Implemented current user ID check for isMe
- Added useUser hook to get current user
- Replaced hardcoded isMe=false with proper user ID comparison
- Improved TwoFactorVerify.tsx: Enhanced TODO comment with specific action items
- Clarified that verify() is for setup, not login
- Added FIXME with clear explanation of the issue
- Documented that parent should handle verification
- Cleanup 14: In progress - addressing simple, safe TODOs
- Removed stores/auth.test.ts - references deleted stores/auth.ts
- File imports from './auth' which doesn't exist (verified in Cleanup 4)
- Auth store is now at features/auth/store/authStore.ts
- Cleanup 3: In progress - removed obsolete auth test file
- Cleanup 7: Remove unused type files - COMPLETE
- Verified no obsolete type files found
- All type files are in active use:
- dto.ts: 10 types still used via barrel exports
- v2-v3-types.ts: 20+ UI-specific types still in use
- backend-types.ts: 2 types used in socialService.ts
- Action 1.1.3.11 audit confirmed no empty or redundant files
- Ready for next cleanup tasks
- Cleanup 6: Remove obsolete state utility files - COMPLETE
- All 6 obsolete files already deleted in Action 4.6.1.3:
- stateCleanup.ts and test
- stateVersioning.ts, test, and example
- statePersistence.ts
- Verified no imports found for any of these utilities
- Ready for next cleanup tasks
- Cleanup 4: Remove stores/auth.ts if obsolete - COMPLETE
- File does not exist (already removed in Action 4.5.1.4)
- Verified no imports reference stores/auth.ts
- All code uses features/auth/store/authStore.ts
- Ready for next cleanup tasks
- Cleanup 16: Remove unused variables - COMPLETE
- Verified no unused variables in production code (src/)
- Unused variables only exist in test files (intentional)
- Ready for next cleanup tasks
- Added logger import that was missing from Cleanup 12
- Fixes 'logger is not defined' error
- Cleanup 16: Verifying no unused variables in production code
- Cleanup 13: Audit TODO comments - COMPLETE
- Found 26 TODO/FIXME/XXX/HACK comments
- Categorized and prioritized for Cleanup 14
- Ready for next cleanup tasks
- Cleanup 10: Audit console.log statements - COMPLETE
- Cleanup 11: Replace console.log with logger - COMPLETE (no production console.log found)
- Cleanup 12: Replace console.error/warn with logger - COMPLETE (5 instances replaced)
- All production console statements now use logger
- Ready for next cleanup tasks
- Created COMMENTED_CODE_AUDIT.md documenting findings
- Found ~4,329 commented lines total (mostly documentation)
- Actual commented-out code blocks are minimal
- Excluded generated files and documentation comments
- Ready for manual review in Cleanup 9
- Cleanup 8: Complete
- Action 11.5.1.6: Apply direction to all components - COMPLETE
- Final verification: All decorative effects removed, functional effects preserved
- 42+ components updated across all major component directories
- Remaining gradients and spacing are functional or intentional
- Epic 11.5: Apply design direction - COMPLETE
- Action 11.5.1.6: Apply direction to all components - IN PROGRESS
- Completed batches 4-5: fixed remaining decorative effects and transforms
- Total: 42+ components updated across all major component directories
- Remaining: Final verification and edge cases
- Action 11.5.1.6: Apply direction to all components - IN PROGRESS
- Completed 3 batches: removed decorative effects, fixed spacing, fixed gradients
- 33+ components updated across all major component directories
- Remaining: Continue with remaining components and final verification
- Action 11.5.1.5: Apply direction to all pages - SUBSTANTIALLY COMPLETE
- Applied design direction across all pages and views (3 batches + user manual changes)
- Removed decorative gradients, scale transforms, and shadows
- Updated spacing to 8px grid alignment (p-6 → p-8, space-y-6 → space-y-8, gap-6 → gap-8)
- Preserved functional overlays, responsive padding, and conditional styling
- All pages and views now follow Surgical Minimalism principles