feat: likes on brews and other record types (#5) master
* feat: like records -- added ability to "like" feed items * fix: sum water from pours when not set explicitly When viewing a brew, if the water amount field is 0 (not set explicitly), the display now calculates the total by summing water amounts from all pours. This provides a more accurate display when users log individual pours but don't set a total water amount. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> feat: add like button to brew view page Added a like button on the brew view page, positioned in the same row as the back button but on the right side. The button: - Shows the current like count - Allows authenticated users to toggle likes via HTMX - Uses the existing LikeButton component Added GetBrewRecordByRKey method to AtprotoStore to fetch brew records with their AT Protocol metadata (URI and CID) needed for the like button. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: move like and share buttons * refactor: move RecordType to lexicons package - Create new internal/lexicons package for AT Protocol lexicon types - Add RecordType type with constants for bean, brew, brewer, grinder, like, roaster - Add String() and DisplayName() helper methods - Update feed/service.go, firehose/index.go, and feed.templ to use lexicons.RecordType - Remove magic strings throughout the codebase for type safety Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * feat: prevent like button requests when unauthenticated - Modified LikeButton to conditionally add HTMX attributes based on IsAuthenticated - Added IsAuthenticated prop to LikeButtonProps and SocialButtonsProps - Updated FeedCard and FeedPartial to pass authentication state through component hierarchy - Added TODO comment to implement login prompt instead of doing nothing when unauthenticated users click like - Edit buttons already check isOwnProfile, so they only appear for authenticated owners Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>