The First Two Months: TUNL from 1.0 to 8.0
The changelog starts at 1.0, but the game started a few days earlier. This is what the first eight versions were, in the order they happened, reconstructed from the commit history.
Week one: a game in a browser tab
The first commit is dated 5 July 2026. By the end of that day the game had sound effects, background music, several coin types and a shield. A day later it had ship skins, speed lines, a day streak, a share button and an iOS wrapper, and it had been renamed TUNL. The daily cave was already the idea: every run is seeded from the UTC date, so every player flies the same tunnel on the same day.
Some early decisions were reversed within hours. The app was locked to portrait for a moment and then put back to landscape, which is now a rule I do not break. A replay ghost that existed in the first version was removed the same day, and it came back properly in 5.0 as a ghost of the day's best run.
1.0: the stores
The rest of the first fortnight was plumbing. The game script was split into modules on 9 July. Leaderboards on Game Center and Play Games and ten languages followed, then a one-time Remove Ads purchase and interstitial ads behind the App Tracking Transparency and GDPR consent prompts. Android got the same set a day later: billing, ads, haptics, and a run of launch-crash fixes. That was 1.0. 1.1 only moved the Android build to the API level Google Play required.
2.x: the audio bug that took three tries
Version 2.0 was a number change so both stores matched. What followed was a bug that looks trivial and was not: after the app went to the background, the music stayed silent when you came back. 2.1 was meant to fix it. The next build was titled "actually fix", and a third change followed in 2.3, because the audio context can be suspended rather than merely closed. All three are in the history under nearly the same name.
2.2 also made scroll speed keep climbing at maximum difficulty. A run should never become endurance at a fixed pace, and that rule has stayed.
3.0 to 4.0: the economy
Ships used to unlock at score thresholds. A strong player could clear the whole list in one run and then had nothing to chase, so 3.0 replaced the thresholds with shards banked from collected coins, and gave every ship a strength and a weakness instead of only a strength. The same version added mastery levels and the first daily missions. Everyone started from zero shards, without grandfathering.
3.2 added the first hazards with an opinion of their own: a poison coin, a bomb coin and the wall-mounted cannon. 4.0 was only the icon, which became the ship and its thrust.
5.0 to 8.0: making a run worth telling someone about
5.0 was the version where a run could leave the game: a run card that draws the tunnel you flew, a world rank on the death screen, and a ghost to race. 6.0 added stardust, a second currency that counts days played rather than skill, so the last ship takes months whatever your score. 7.0 gave every weekday its own rock, and 8.0 rebuilt the title screen and added the "+RECORD" moment. The biggest change to what the first minute feels like was small: no obstacles before score 25, so the first lesson is the flying.
What the eight versions have in common
These eight versions built the loop: fly, collect, unlock, come back tomorrow. The deliberate pacing of a run, sectors and a flight plan, came later and is described in the pacing post. The rules that hold the game together today, a cave that is the same for everyone and a ship that flies the same on every screen, are described in One Cave, Every Player and The Same Ship on Every Screen. Every version since is in the changelog.