Stabilize feed order with a deterministic signal-score tiebreaker

Equal-score stories reshuffled on every pull-to-refresh because the sort
was unstable. Add StorySummary.feedOrder (signalScore desc, then id desc,
mirroring the backend's signal_score DESC, id DESC) and use it for the feed,
the WebSocket re-sort, and the Saved/Search tabs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Robin Kutesa
2026-06-18 23:33:22 +03:00
parent 1e582f5120
commit 9662c2abf6
4 changed files with 16 additions and 5 deletions

View File

@@ -139,7 +139,7 @@ final class StoryStore: ObservableObject {
createdAt: old.createdAt
)
stories[idx] = updated
stories.sort { $0.signalScore > $1.signalScore }
stories.sort(by: StorySummary.feedOrder)
}
private func removeStory(id: String) {