feat: restore advanced message rendering with full feature parity
Implement enhanced message bubbles with all features from original app:
- Reasoning blocks with expand/collapse
- Tool call/return pairing with lookahead/lookback
- Orphaned tool return handling for edge cases
- Compaction bars with JSON parsing and expandable summaries
- Copy to clipboard with 2s visual confirmation
- Multimodal content support (images + text)
- Expandable content with configurable line limits
- "(co said)" label for assistant messages
New Components:
- CompactionBar.tsx: Thin divider with expandable compaction summary
- OrphanedToolReturn.tsx: Handles tool returns without matching calls
- MessageBubble.enhanced.tsx: 370-line comprehensive message renderer
- useMessageInteractions.ts: Hook for Set-based state management (O(1) lookups)
Updated:
- ChatScreen.tsx: Integrate enhanced bubbles with all interaction handlers
- App.new.tsx: Pass colorScheme and showCompaction props
- App.tsx: Toggle mechanism between old and new versions
Architecture preserves modularity with proper component extraction and
reusable hooks. Message rendering now achieves 100% feature parity with
original app while maintaining clean separation of concerns.