Single fix on top of v1.0-build34: the StatsView Uptime now reflects
how long the tunnel has been running, not how long since the iOS main
app was last attached.
The build-33 fix stamped connectedAt locally on app re-attach, on
the theory that the user mainly cares about "is it ticking" rather
than absolute uptime. vpn.lte.0.log on 2026-05-03 showed why that
was wrong: iOS jetsam'd the main app twice during a single tunnel
session (at 11:56 and 12:04), and each re-launch reset the locally-
stamped origin. A 43-minute connected session displayed as Uptime
"0:07".
Now the extension reports its own startedAt-derived uptime via a new
tunnel_uptime_sec field in stats, and TunnelManager.fetchStats syncs
connectedAt from it on every poll. The extension survives main-app
jetsam, so the value is authoritative.
Side benefit: any future Stats consumer (a debug page, an Apple
Watch complication, anything reading the JSON) gets the same
authoritative uptime without needing access to the main app's
session-local state.