GREEN phase: Create message list component with:
- Redux integration (activeChannel, messages, fetchStatus selectors)
- Auto-scroll logic with scroll state management
- Scroll to bottom on mount and new messages
- Disable auto-scroll when user scrolls up
- Re-enable auto-scroll when user scrolls to bottom (50px threshold)
- 300ms debounce for scroll detection
- Loading state (JKChatLoadingSpinner)
- Empty state (JKChatEmptyState)
- Message rendering (JKChatMessage components)
Auto-scroll behavior:
- isUserScrolling state tracks manual scrolling
- scrollToBottom helper with smooth scrolling
- isAtBottom detects bottom position (50px threshold)
- handleScroll debounces scroll events (300ms)
- Cleanup timeout on unmount prevents memory leaks
Mock Element.prototype.scrollTo in tests (not available in JSDOM).
All 3 tests passing:
- Empty state display
- Loading spinner display
- Message rendering
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>