fix: story heart fav race + double-tap finger tracking + rename
- toggleStoryFavorite now captures storyUri and re-resolves the index by
URI after every await, so timer auto-advance or a user tap mid-request
no longer lands the optimistic/success/rollback writes on the wrong
story. Guard per-URI via favoritingStoryUris so overlapping requests
on different stories don't clobber each other. Signpost intervals +
logger lines wrap the toggle flow for Instruments.
- Rename StoryCommentsViewModel.latestComment → firstComment (it's
chronologically first, not latest); update tests and StoryViewer
callers.
- Double-tap heart now follows the finger: tap zones report location
via .onTapGesture(count: 2, coordinateSpace: .named("storyHearts")),
with the matching .coordinateSpace declared on the storyContent
ZStack where the hearts overlay renders.
- Fix self.progress autoclosure warning in StoryTimer.resume logger.