mirror of
https://github.com/yusufipk/YTChatHub.git
synced 2026-09-11 19:06:14 +00:00
Add backend support for YouTube live polls including: - Poll event handling and state tracking - New `/poll/current` endpoint for current poll data - Server-sent events stream at `/poll/stream` for real-time updates - Poll emitter for broadcasting poll changes to clients
4.3 KiB
4.3 KiB
Progress Tracker
Phase 0 – Foundations
- Create Memory Bank documentation.
- Simplify project layout (single package, shared types via alias).
- Document setup instructions for the new command set.
Phase 1 – Core Infrastructure
- Implement Innertube client bootstrap (retrieve context, manage continuation tokens).
- Build backend poller with full normalization and comprehensive message parsing.
- Expose REST+SSE endpoints for chat and overlay delivery.
- Fix CORS issues for cross-origin SSE connections.
- Parse badges (moderator, member, verified), superchats, and membership gifts.
Phase 2 – Operator Dashboard
- Implement modern chat feed UI with live status indicators.
- Display user avatars, badges, and special message types (superchats, memberships).
- Provide message selection controls with visual feedback.
- Centered layout with gradient backgrounds and glass-morphism effects.
- Message count display and connection status.
- Conditional auto-scrolling for chat panels.
- Timezone-aware timestamp formatting for all messages.
- Visual selection state management (active, normal, previously-selected).
- Fix super sticker image not showing.
- Add chat leaderboard badge.
- Show active poll indicator.
Phase 3 – OBS Overlay Experience
- Create overlay page that consumes SSE stream at
/overlay. - Style overlay with modern design including avatars, badges, and superchat displays.
- Ensure transparent background for OBS browser source.
- Display new member announcements on overlay.
- Optimize overlay spacing for efficient use (30-40% more compact).
- Remove timestamps from overlay for cleaner display.
- Add smooth fade transitions when switching between messages.
Phase 4 – Reliability & Polish
- Implement image proxy with caching to prevent YouTube CDN 429 errors.
- Implement smart message storage that preserves superchats/memberships.
- Add log-in and unique stream id for each logged in user
- Do a security check
- Refactor the code
- Ensure the deployment.
- Write tests (unit/integration) and contributor documentation.
Phase 5 - Customization
- Add customization options
Current Status
- ✅ YouTube Integration Live: Backend connects to real YouTube Live chat and parses all message types
- ✅ Modern UI Complete: Dashboard features centered layout, gradient backgrounds, badges, and superchat displays
- ✅ CORS Fixed: Overlay SSE stream works cross-origin for OBS integration
- ✅ Rich Parsing: Moderators, members, verified users, superchats, and membership gifts all detected and displayed. Currency parsing is now more robust.
- ✅ UI Polished: The dashboard and overlay layouts have been refined for better spacing and alignment. Overlay is 30-40% more compact.
- ✅ Auto-Scroll Implemented: Chat panels now auto-scroll intelligently.
- ✅ Timestamp Resolution Fixed: Critical bug resolved - timestamps now display correct current time instead of 1970 epoch
- ✅ Timezone Support: Dashboard timestamps display in user's local timezone with browser detection and GMT+3 fallback
- ✅ Visual Selection States: Three-tier feedback system (active/normal/previously-selected) for better UX
- ✅ Image Proxy Implemented: Backend now proxies all YouTube CDN images (avatars, badges, emojis, super stickers) with 24hr in-memory cache to prevent 429 rate limit errors. Added lh3.googleusercontent.com domain for super stickers.
- ✅ Overlay Animations: Smooth fade-out/in transitions when switching between messages
- ✅ Smart Storage: Regular messages limited to 200, superchats and memberships preserved for entire session
- ✅ Super Sticker Support: Super sticker images now display correctly in both dashboard and overlay with proper error handling and accessibility labels
- ✅ Leaderboard Badge Support: YouTube leaderboard ranks (Top Chatter) now display with crown emoji and rank number next to usernames in both dashboard and overlay with golden styling
- ✅ Live Poll Indicator: Pulsing poll indicator shows in dashboard header when a YouTube poll is active, automatically hides when closed
- Next: Implement user authentication, add persistent image cache, develop overlay theme controls