feat: eager HTML cache regeneration on updateTag/refresh
When updateTag() or refresh() is called in a server action, this change ensures:
1. User A (action caller) sees fresh data immediately (read-your-own-writes)
2. User B (cold visitor) gets the same cached data from HTML cache
3. Both users see identical data from a single render
Implementation uses client-side stream splitting:
- Server concatenates action result stream and page stream with a boundary
- Client splits on boundary, processes each stream independently
- Results combined at JS object level
Files changed:
- lib/constants.ts: Added FLIGHT_STREAM_BOUNDARY constant
- node-web-streams-helper.ts: Added concatenateFlightStreams()
- action-handler.ts: Trigger logic for updateTag/refresh
- fetch-server-response.ts: Added splitFlightStreams()
- server-action-reducer.ts: Handle split streams on client
- render-result.ts: Added toReadableStream() method
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>