The hours you actually flew

· flight · feed · telemetry

Two numbers on this site were describing a browser tab rather than a pilot. Both are fixed today, and one of them is going to drop sharply on your profile, so here is what changed and why.

Flight time counted an open tab

The ✈ chip on a profile came from session telemetry: a row opens when you take off and closes when you land or the socket dies. Paused time was subtracted from it, using the same signal that puts the ⏸ badge next to your name: Esc, a lost pointer lock, a hidden tab.

That only ever covered what the browser managed to tell us. A tab the operating system froze says nothing. A laptop whose lid closed says nothing. The row stays open, the socket survives on throttled timers for hours, and every one of those hours was booked as flying.

The measurement was already there and we were throwing it away. Once a minute, a moving player stamps a liveness beat. "Moving" is generous there: both vehicles send position from the frame loop on a timer rather than when something changes, so even hovering perfectly still keeps stamping. When the frame loop stops, the beat stops. Nothing else does.

So the numbers: over ten days the wings rows added up to 292 hours of span. 41 of those were recorded as pause. 194 were past the last sign of life. One row ran nineteen and a half hours with no pause recorded and not one movement in the whole night. One account was showing 137 hours against 1.6 hours anybody had actually moved in.

Each row is now trimmed to its last beat plus a two-minute grace, with pause still subtracted on top and the result clamped at zero. Every uncertainty shortens the answer; none of them can lengthen it.

What it still counts is a pilot sitting at a focused, visible tab with their hands off the controls. The frame loop keeps running, beats keep landing, and idling looks exactly like flying. The tooltip has always said so and still does.

Sessions from before 11 September have no beat at all, because the field did not exist, so there is nothing to trim them against. They are not folded into the total and not thrown away either: the API keeps them in a separate field, which is where the measurement starts. The chip does not print them. A second number on a profile, explaining itself with a date, is worse than one number you can trust.

The feed announced reconnects, not arrivals

The second one you may have noticed in your own history: "arrived in Hamburg" showing up on days you never took off.

When a socket reconnects, the tab has to re-declare that its owner is playing — the server keeps that flag per connection, and without the re-declaration the feed would go silent for somebody genuinely in the air. The problem was what the server did with it: instead of restoring the flag, it replayed the whole arrival. One account produced seven "arrivals" in a day, each of them 0.1 to 0.9 seconds after its socket opened. Across a week, 117 of 212 visit rows were shorter than two minutes.

Reconnects now say so, and a reconnect restores the flag and nothing else. Behind that, arrivals in the same city within two minutes of each other are treated as one trip, which catches older clients and the first position report after a reconnect as well. A real return hours later is still a real return.

This one was not only in your own history. The live feed is embedded on the city pages, so those landing pages were reporting someone arriving every few minutes when nobody had moved.

More from Skydex

Play Skydex free →