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.
Replace all hardcoded orange color values with AppColors.primary constant
for better maintainability and easier theme updates.
Changes:
- PrimaryButton: Use AppColors.primary for background, shadow, and ripple
- LoginScreen: Use AppColors.primary for input focus border and help link
- Placeholder screens: Use AppColors.primary for icon colors
- MainShellScreen: Use AppColors.primary for selected nav item color
This makes it easier to update the accent color across the entire app
by changing a single constant.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Update app branding with new name and Bluesky-style icon system. Replace Material icons with custom SVG icons for cleaner navigation UI. Generate adaptive launcher icons from Coves shark logo with proper safe zones.
Key changes:
- Rename app from "Coves Flutter" to "Coves" on Android and iOS
- Add BlueSkyIcon widget with custom SVG icon support
- Implement Bluesky-style navigation icons (home, search, plus, bell, person)
- Generate adaptive launcher icons with flutter_launcher_icons
- Configure Android adaptive icons with #0B0F14 background
- Bump version to 1.0.0+2
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add communityName color to AppColors for threading indicators
- Update dart:async import to use official unawaited function
- Regenerate feed provider test mocks for latest dependencies
- Remove unused imports from test files
Minor code quality improvements following Dart best practices.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Main.dart changes:
- Add CommentsProvider to app-level provider tree
- Use ChangeNotifierProxyProvider2 for proper dependency injection
- Integrate with AuthProvider and VoteProvider
- Add NotFoundError screen for missing post routes
- Ensure proper provider lifecycle management
PostCard changes:
- Add disableNavigation parameter to prevent recursive navigation
- Fix issue where tapping post on detail screen creates infinite stack
- Maintain backward compatibility (defaults to clickable)
Architecture improvements:
- Follows existing FeedProvider pattern for consistency
- Proper provider disposal handled by framework
- Hot reload support via provider reuse pattern
- No manual provider creation in widgets
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Comment model tests (12 test cases):
- JSON parsing with valid and invalid data
- Null handling and edge cases
- Nested reply structures
CommentsProvider tests (25 test cases):
- loadComments success and error scenarios
- Pagination logic with cursor handling
- Sort option changes and pending refresh mechanism
- Auth state change handling
- Time update mechanism with ValueNotifier
- Error recovery and rollback
CovesApiService tests:
- getComments endpoint success cases
- Error handling (404, 500, network errors)
- Timeout scenarios
- Response parsing with viewer state
All tests use proper mocking with mockito and achieve >80%
code coverage for new comment features.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
LoadingErrorStates widgets:
- FullScreenLoading: Full-screen loading spinner for initial loads
- FullScreenError: Full-screen error with title, message, and retry
- InlineLoading: Inline loading indicator for pagination
- InlineError: Inline error with retry for pagination
- NotFoundError: User-friendly not-found screen with back navigation
ErrorMessages utility:
- Centralized error message transformation
- Converts technical errors to user-friendly messages
- Handles network errors, timeouts, HTTP status codes
- Provides consistent error UX across the app
All widgets follow Material Design patterns and maintain
consistent styling with AppColors theme.
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Full post detail view with nested comment display
- Pull-to-refresh support for comments
- Sort dropdown integration (Hot/Top/New)
- Infinite scroll pagination with scroll listener
- Loading and error states with retry functionality
- Performance optimized with ValueListenableBuilder
- Prevents unnecessary rebuilds via _PostHeader and _CommentItem wrappers
Features:
- Post card displayed without navigation (disableNavigation flag)
- Real-time comment sorting with error recovery
- Proper safe area handling (top and bottom)
- Error snackbar with retry action on sort failures
- NotFoundError screen for missing posts
- Integrates with CommentsProvider and VoteProvider
Performance optimizations:
- Timer updates only rebuild time-dependent widgets
- Post header doesn't rebuild when comments change
- Individual comment items rebuild independently
馃 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>