Display rolling-window throughput while a side is actively transferring
Commit

The displayed rate was averaged over the side's whole active window (stats start → last byte), which dilutes the streaming portion with the auth + ref-listing setup time before bytes start flowing. For a sync that spends ~3s on setup then streams a pack at 44 MB/s for 10s, the headline reads ~33 MB/s and only slowly drifts upward — much lower than what the user's network monitor reports.
Take a sample on every render tick and keep the last sampleCapacity (10 → ~2s at the default 200ms interval) per side. Compute the displayed rate from the oldest-vs-newest delta within that window, so the number tracks recent wire throughput instead of a session-wide average. Once a side goes idle (no bytes for
idleThreshold) or on the final frame, fall back to the active-window average — a stable post-transfer headline that won't jump around as the ring drains.
The end-of-run "throughput:" line still uses the active-window average (formatSide called with instantRate=0), which is the right summary for a completed sync.
Entire-Checkpoint: c774b094c53c