f599f9d28e
Persisting only 'dismissed' kept swapped-away stories out but let the brief recompose on refresh — so a chosen replacement (and the hero) could change unexpectedly. Now the reader's actual brief view is persisted per day: - loadToday keeps the saved view for the same brief_date (swaps and hero hold steady); re-fetches fresh on a new day or when forced. - A boundary change forces a fresh re-fetch (and re-pins); Replace pins the new view; Clear-session drops the pin so it re-composes fresh. Frontend only — rebuild + refresh (no server restart needed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>