code
Clone this repository
https://tangled.org/bretton.dev/coves-mobile
git@knot.bretton.dev:bretton.dev/coves-mobile
For self-hosted knots, clone URLs may differ based on your setup.
CommentCard:
- Display individual comments with author info and content
- Colorful threading indicators (6-color palette) showing nesting depth
- Optimistic voting via VoteProvider integration
- Right-aligned vote button with proper accessibility labels
- Custom painter for vertical threading lines (2px stroke, 6px spacing)
- Dynamic left padding based on nesting depth
CommentThread:
- Recursive rendering of nested comment replies
- Proper depth tracking and max depth limiting
- "Load more replies" button support
CommentsHeader:
- Comment count display with pluralization
- Sort dropdown (Hot/Top/New) with visual feedback
- Empty state handling
Visual features:
- Threading lines extend through full comment height
- Border dividers respect threading indicator spacing
- Subtle author name and timestamp styling (50% opacity)
- Consistent spacing (6px per level + 14px base padding)
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive state management for comments with pagination
- Implement sort options (hot/top/new) with pending refresh mechanism
- Support optimistic vote integration via VoteProvider
- Add time update mechanism with ValueNotifier for efficient rebuilds
- Handle auth state changes and automatic vote state loading
- Implement error recovery with rollback on sort change failures
Features:
- Cursor-based pagination for infinite scroll
- Automatic refresh scheduling when sort changes during loading
- Clean separation of concerns with proper provider lifecycle
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add CommentView, ThreadViewComment, and CommentsResponse models
- Implement getComments API endpoint in CovesApiService
- Support optional Dio injection for testing
- Handle nested comment threads with proper JSON parsing
- Add support for comment stats, viewer state, and parent tracking
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update CLAUDE.md with Flutter PR review guidelines
- Regenerate macOS plugin registrant
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Dependencies added/updated:
- video_player: ^2.8.7 (pinned for stability)
- http_mock_adapter: ^0.6.1 (dev, for testing)
- Removed chewie: ^1.7.0 (unused)
Configuration fixes:
- Moved http to dev_dependencies (was misplaced)
- Fixed YAML syntax error
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Replace unsafe .cast<Map<String, dynamic>>() with .whereType() to
prevent runtime errors when parsing images array.
The .cast() method throws at runtime if list contains non-Map items.
The .whereType() method safely filters out invalid items.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>