- Add avatar_url field to MemberSettingsUpdate schema - Create AvatarService for generating default avatars using DiceBear - Update auth service to generate avatars on user registration - Add avatar upload UI to settings page - Update settings endpoint to handle avatar URL updates - Display current avatar in settings with upload/generate options Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
5.1 KiB
Commit Summary: Comment Waveform Integration
✅ Successfully Merged to Main
Commit Hash: 3b8c4a0
Branch: feature/comment-waveform-integration → main
Status: Merged and pushed to origin
🎯 What Was Accomplished
1. Complete Comment Waveform Integration
- ✅ Comments now capture exact playhead timestamp when created
- ✅ Waveform markers appear at correct positions
- ✅ User avatars display in markers (with placeholder fallback)
- ✅ Clicking markers scrolls comment section to corresponding comment
- ✅ Timestamp buttons allow seeking to comment positions
2. Technical Implementation
API Changes (api/src/rehearsalhub/schemas/comment.py):
- Added
author_avatar_url: str | NonetoSongCommentReadschema - Updated
from_modelmethod to include avatar URL from author relationship
Frontend Changes (web/src/pages/SongPage.tsx):
- Added
author_avatar_url: string | nulltoSongCommentinterface - Modified comment creation to include current timestamp
- Updated marker creation to use real user avatars
- Fixed TypeScript type safety for nullable timestamps
Waveform Enhancements (web/src/hooks/useWaveform.ts):
- Improved marker styling (24px size, white border, shadow)
- Better icon display with proper object-fit
- Enhanced visibility and interaction
3. Bug Fixes
TypeScript Error: Fixed TS2345 error by adding non-null assertion
// Before: onClick={() => seekTo(c.timestamp)} ❌
// After: onClick={() => seekTo(c.timestamp!)} ✅
Interface Compatibility: Changed timestamp: number to timestamp: number | null
- Maintains backward compatibility with existing comments
- Properly handles new comments with timestamps
4. Debugging Support
Added comprehensive debug logging:
- Comment creation with timestamps
- Marker addition process
- Data flow verification
- Error handling
📊 Files Changed
api/src/rehearsalhub/schemas/comment.py | 5 ++
web/src/hooks/useWaveform.ts | 68 ++++++++++++++++++-
web/src/pages/SongPage.tsx | 69 ++++++++++++++++++--
Total: 3 files changed, 142 insertions(+), 9 deletions(-)
🧪 Testing Verification
Expected Behavior After Deployment
-
New Comment Creation:
- Play song to specific position (e.g., 1:30)
- Add comment → captures exact timestamp
- Marker appears on waveform at correct position
- User avatar displays in marker
-
Marker Interaction:
- Click waveform marker → scrolls to corresponding comment
- Comment gets temporary highlight
- Timestamp button allows seeking back to position
-
Backward Compatibility:
- Old comments (no timestamp) work without markers
- No breaking changes to existing functionality
- Graceful degradation for missing data
Debugging Guide
If issues occur, check:
- Browser Console: Debug logs for data flow
- Network Tab: API requests/responses
- Database:
SELECT column_name FROM information_schema.columns WHERE table_name = 'song_comments' - TypeScript: Run
npm run checkto verify no type errors
🎉 User-Facing Improvements
Before
- ❌ Comments created without timestamp information
- ❌ No visual indication of comment timing
- ❌ Generic placeholder icons for all markers
- ❌ Poor marker visibility on waveform
After
- ✅ Comments capture exact playhead position
- ✅ Waveform markers show precise timing
- ✅ User avatars personalize markers
- ✅ Improved marker visibility and interaction
- ✅ Seamless integration with audio playback
🔮 Future Enhancements
Potential improvements for future iterations:
- Tooltip showing comment author on marker hover
- Different marker colors for different users
- Animation when new markers are created
- Support for editing comment timestamps
- Batch marker creation optimization
📝 Commit Message
fix: comment waveform integration with timestamps and avatars
- Add author_avatar_url to API schema and frontend interface
- Capture current playhead timestamp when creating comments
- Display user avatars in waveform markers instead of placeholders
- Improve marker visibility with better styling (size, borders, shadows)
- Fix TypeScript type errors for nullable timestamps
- Add debug logging for troubleshooting
This implements the full comment waveform integration as requested:
- Comments are created with exact playhead timestamps
- Waveform markers show at correct positions with user avatars
- Clicking markers scrolls to corresponding comments
- Backward compatible with existing comments without timestamps
🎯 Impact
This implementation transforms comments from simple text notes into a powerful, time-aware collaboration tool that's deeply integrated with the audio playback experience. Users can now:
- Capture context: Comments are tied to exact moments in the audio
- Navigate efficiently: Click markers to jump to relevant discussions
- Personalize: See who made each comment via avatars
- Collaborate effectively: Visual timeline of all feedback and discussions
The feature maintains full backward compatibility while providing a modern, intuitive user experience for new content.