StoryStore gains startForegroundSync() / stopForegroundSync():
- Polls loadStories(refresh:true) every 5 minutes while app is active
- WebSocket handles real-time storyCreated events between polls
- Timer cancels when app goes to background to save battery
JarvisApp wires scenePhase:
- .active → start 5-min timer; immediate refresh if last sync > 2 min ago
- .background → cancel timer
- On launch → timer starts after setup completes
Net result: feed replenishes automatically; user never hits an empty list.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>