Changelog
Newest first. Versions get their own heading once releases are tagged.
2026-10-14 — Trainers live in With
- Pick a trainer in the With sheet, right under Nobody; the separate Trainer card on Ready is gone.
2026-10-14 — A trainer or an opponent
- A trainer and an opponent no longer run together: picking one sets the other to none.
2026-10-14 — The AR runner stands on the ground
- Its feet follow the ground ARCore finds under your phone, stay on it up close, and a noisy height map no longer lifts it into the air.
2026-10-14 — A new finish dock
- The finish screen ends in two buttons at the bottom: Start again (Ready on the same setup) and Done.
2026-10-11 — A 3D runner in AR (cycle 96)
- Your AR opponent is a 3D runner in their colour: it runs, walks or stands at their pace and turns with the route. 3D runner by Kay Lousberg (KayKit), CC0.
2026-10-11 — AR fills the screen (cycle 95)
- In AR, tap the full-screen button: the camera takes the whole screen with the standings and Stop over it. Back brings the slot back.
2026-10-11 — Invite links only make friends (cycle 94)
- Referral rewards are gone for good: a friend who joins through your link becomes your friend, nothing else is counted or unlocked.
2026-10-11 — Your opponent runs in AR (cycle 93)
- The AR opponent is a runner that strides at their pace and shrinks with distance; the finish shows as a flag.
- Lower the phone and AR rests; raise it and it's back. If the phone gets hot, AR switches off.
2026-10-11 — See your opponent in AR (cycle 92)
- On a route race, tap the AR button on the map: the camera shows where your opponent is. Tap the map button to go back.
2026-10-10 — Old races are plain races (cycle 91)
- Runs from the boss ladder, the old AI heroes and Metronome now read like any race, against the name they were run against. Old Metronome shortcuts are gone; set Calm at a pace instead.
2026-10-10 — Only people to race (cycle 90)
- The boss ladder, Grit, perks and throwables are gone: you race your past runs, friends and other runners.
- Metronome became Calm at a pace you set.
- Everything is free.
2026-10-10 — Trainers (cycle 89)
- Run with a trainer: Calm runs at your pace, Scientific has a plan, Army pushes hard. Each is set from your usual pace.
- Race someone and a trainer coaches you in your ear instead.
- Your run says how far you stayed with your trainer.
2026-10-10 — Miles, speed and a beep for a close race (cycle 88)
- Pick kilometres or miles, and pace or speed, under Settings → Units; the app and the voice follow it.
- A beep tells you how close your opponent is: faster as they get nearer, a different tone when they're behind. Turn it off in Voice guidance.
2026-10-10 — Standings and a map that turns (cycle 87)
- The race card shows the standings, 1st and 2nd, with how far the other runner is from you.
- The map turns with you as you run; tap the compass for north up.
- "My best run" under With shows the time over the route you're racing, not the whole run.
- GO is a proper button, and Ready's cards have room to breathe.
- Home lists this week's runs once, under the week's ring.
2026-10-06 — One way to pick a bot (cycle 86)
- The ladder is the only bot: With offers the boss you face next. Heroes, levels, the hall and the loadout are gone, and old links open the ladder.
- A friend who joins opens one more rung of the free ladder.
- Nothing sits under the raised Start button; it turns amber while you're paused.
2026-10-06 — Results in seconds (cycle 85)
- Your run uploads while you run, so after you stop it's saved in about a second and the official result follows a second or two later.
- A run recorded offline catches up on its own when you're back online.
2026-10-06 — Voice, Ready and the finish (cycle 84)
- The voice says each kilometre with its pace, and speaks about your opponent only when the gap changes step (10, 50, 100 m and on), not every minute.
- Ready is three cards: Where, With and Goal. Your recent setups sit under them as shortcuts.
- Every run ends on a finish screen with your result and stats, including a route race that ends by itself.
- Labels read the same on the phone and the website.
2026-10-06 — The tower (cycle 83)
- One ladder of twelve bosses per sport, easiest at the bottom: beat the one you face to unlock the next. No levels to pick, no daily limit.
- Your friends show beside the rung they've reached.
- Race the next boss in one tap from the tower, or pick "Next on the ladder" under With.
- Stopping a boss race before the line now says you didn't finish, instead of a win.
2026-10-05 — Heart rate in the race (cycle 81)
- Your bpm shows on the race screen, and CoRunner can say it with its status updates (Voice settings, off by default).
- A run's heart rate shows as a line on its elevation chart and per split. Only you see it.
- Logging out clears the phone's runs, and warns you first when some haven't reached the server yet.
2026-10-05 — Heart rate (cycle 80)
- Pair a Bluetooth heart-rate strap in Settings and see your bpm live while you record.
- A run recorded with a strap shows its average bpm, on the phone and the website.
2026-10-05 — Rename and share a route (cycle 79)
- Rename your own route from its page on the phone.
- Share any route's GPX file with another app from the share icon; the file is named after the route.
2026-10-05 — Routes are routes (cycle 78)
- A route card shows the route, not your pace or a leaderboard. Tap it for its map, climb and your activities on it.
- Routes are grouped into Private, Friends and Community, with a switch on your own to share it.
- Export any route as a GPX file, and import a GPX file as a private route, on the phone and the website.
- A route you save or draw starts private until you share it.
2026-10-05 — Bests on your profile
- The first time a run sets a best, CoRunner asks whether your bests go on your public profile. Change it any time in Settings, on the phone or the website.
- Offline, the phone's bests card no longer shows a separate "fastest run of 5 km or more".
2026-10-05 — Personal bests (cycle 77)
- Your fastest 1, 5 and 10 km (10, 20 and 40 km on a ride), your longest run and your biggest climb, on You — tap one to open the run.
- A run that holds a best says so on its page.
- A 1-minute or 5 km goal now saves at exactly the goal, not a second over.
2026-10-04 — A live invite reaches you (cycle 76)
- A friend's live race invite and kudos on your runs now notify you, in the same friend group: tap the invite to land in its lobby, the kudos to open the feed. Kudos come as one notification that counts them, never one per kudos.
- CoRunner opens on a dark screen instead of a white flash, and Home no longer flashes the first-run card before your runs appear.
- A result the server replay changed has one coloured line: the verdict; the note under it is grey, on the phone and the website.
2026-10-04 — One tap to what's new (cycle 75)
- Friend notifications stack as one group: tap it to open the newest, expand it for the rest.
- Reopening CoRunner during a run no longer flashes Home before your run.
2026-10-04 — Ready says what GO starts (cycle 74)
- The With row says what you race: the record's time to beat, the distance you share with a friend's run, a challenge spent when you press GO, a hero's 5 km plan.
- The countdown speaks: "Three, two, one".
- A short or unprocessed past run is named by its date, and Ready says when it is offline instead of hiding the routes.
- The hero you last raced keeps its level the next time you open Ready.
- On the website a lost race reads amber, as on the phone.
2026-10-04 — Metronome
- The pace you race is now called Metronome: "Metronome · 5:00 min/km" on With, on the race screen, in the voice and on your past pace races.
- A new app download is never served from a stale cache.
2026-10-04 — When the official result differs (cycle 73)
- Your run's page says when the server's replay changed the result your phone announced, and what the phone had said; your phone tells you when that happens while it's in your pocket.
- The same line on the web.
2026-10-04 — Freestyle shows a virtual track (cycle 72)
- Racing with no route shows a 1 km track with both of you on it and the lap you're on, instead of a map.
- Your opponent's place counts the hills you ran.
- Ready suggests picking a route when you race on Freestyle — the map, and later AR, need one.
- The feed says "by effort" for effort races, like Home.
2026-10-04 — Draw where you look (cycle 71)
- Drawing a route shows where you are and which way you're facing.
- Turn the map with two fingers; the compass shows north and a tap turns it back.
- Drag the line to add a point in the middle; drag a point to the edge and the map follows.
2026-10-04 — A route is a route (cycle 70)
- Routes no longer have a sport: any activity along one lands on it, and each sport gets its own leaderboard.
- Drawn routes follow roads and footways (routing by FOSSGIS, OpenStreetMap data).
- Save any run as a route from its page on the phone.
- Picking a route no longer changes your activity.
2026-10-04 — Goals, loops and laps (cycle 69)
- Pick a route and the goal is to finish it — or run 2, 3, 5 or any number of laps when the route is a loop. The voice calls each lap and the run saves itself at the line.
- The goal is now one of: none, a time, a distance, or finishing the route.
- Racing a set pace moved to "With": pick Metronome and the pace, like any other opponent.
- Drawing a route has "Close the loop", and loop routes say so.
- A route's leaderboard counts your best lap of a multi-lap run.
2026-10-03 — Your friends reach you (cycle 68)
- Your phone tells you when a friend challenges you, asks to be friends or comments on your run — a tap opens it. Turn it off under Settings.
- Runs on the flat no longer show effort next to the same distance, on the web's runs list, feed cards and shared run pages, and on the phone's feed.
2026-10-03 — Move a point on a drawn route (cycle 67)
- Drawing a route: drag a point to move it; Undo takes back the last change, whether you added, moved or cleared.
- The panel under the map keeps its height while you draw.
- On the website, Home's week and recent runs show effort only when it differs from distance.
2026-10-03 — The app opens on your run (cycle 66)
- Open CoRunner while a run is going (after locking the phone, after a restart, after going back to Home) and you land on the run — the recorder, or the race with the opponent and the gap — not on Home.
- The race screen's progress reads "91 / 320 m": the unit once, so it fits at large font sizes.
- On the website, a flat run's page no longer shows effort next to an identical distance.
2026-10-03 — Counting what works (cycle 65)
- CoRunner now counts, on its own server, how many people sign up, record runs, race, share and invite friends, so we can see what helps and what doesn't. Nothing personal is kept with those counts: no IP address, no device details, no third-party trackers.
- Run stats on the website keep a short unit like "km" or "m" on the same line as the number, on phones too.
2026-10-03 — A race survives a restart (cycle 64)
- If your phone closes CoRunner in the middle of a race, opening it again puts you back in the same race: the opponent, the gap and the result at the line are where they were, and you hear "Back in the race against …".
- When a race can't come back (a live race, a boss attempt, or no connection to load the opponent), the recorder says so in one line and the run saves as a plain recording. A challenge isn't used up by a restart.
- Reopening the app right after it was closed carries on with the same run instead of ending it early.
- A recording on a route gets its route line and name back after a restart.
- While paused, the recorder says which sport: "Run paused · 3:26".
- Drawing a route: when Save is greyed out, a line says why (too short, or no name), and Back asks before throwing your points away.
2026-10-03 — Friends on the phone (cycle 63)
- Find friends (on You) and a new Friends card on Community open a Friends screen in the app: search by name, handle or exact email, accept or decline requests, cancel ones you sent, and share your invite link.
- Tap a friend to see their profile in the app: lifetime distance, effort and time, and their recent runs. Any run opens as before, with Race one tap away.
- Add, accept or remove a friend from their profile; removing asks first.
- One rule for the little marks in the app: a chevron opens something in the app, an arrow-out icon opens the browser, and a picked chip shows a ✓.
- Route rows show whether they are open or closed.
2026-10-03 — Words and the web (cycle 62)
- The website's menu matches the app: Home, Routes, Runs, Community and You, at every screen size.
- Community on the web shows the feed with Challenges, Live, Events and the Leaderboard; old /feed links still work.
- A new You page on the web: your goal, the ladder, the hall of fame, friends (with any requests waiting), heroes, settings and log out.
- Routes are called routes everywhere, including "Draw a route"; Companions are now Heroes.
- After a run with a goal, it reads "Goal 20 min · stopped at 2:10" instead of sounding as if the limit stopped you.
- Pages say each thing once: favourite routes aren't listed twice, and the leaderboard, runs and heroes pages lost their repeated labels.
- Typing no longer hides the button you need: drawing a route, comments, route search and goals keep it above the keyboard.
2026-10-03 — A bottom bar (cycle 61)
- A bar at the bottom of the app: Home, Routes, Start in the middle, Community and You. While a run is recording, Start reads "Recording · open" (or "Paused · open") and takes you back to it.
- Home is shorter: what to do next, this week and your recent runs.
- Community holds the feed, live races, events, the leaderboard and any challenges waiting for you.
- You is about you: your weekly goal, the ladder, personal bests, the hall of fame, friends, companions, and your statistics on their own page. Settings, privacy and terms moved behind the gear.
- The Ready screen says everything once: the rows are your setup, GO just says GO, and the chips under a row only offer other choices.
- On the web, the menu says Community, and a friend's run lights Community instead of Runs.
2026-10-03 — Pause and resume (cycle 60)
- Pause a recording or a race with one tap (a light, a shoelace, a shop) and resume with one tap; the notification has Pause and Resume too. Stop is still a hold.
- While paused the clock, the gap and your opponent stand still, and a time goal's countdown waits. Nothing you do during the pause counts as distance, moving time or effort.
- The server scores on the same running time, so the official result of a race matches what the phone showed; ghosts, effort races, route boards and event results skip the paused time.
- The run page says how long you paused ("Moving 24:10 of 26:02 · paused 2:10"), on the phone and on the web; a shared run's page shows its moving time too.
- If the phone closes the app while you are paused, the run comes back paused.
- Live races and the ladder's boss have no Pause: the room's clock and the boss don't wait.
- The sport is fixed once you press GO; if it's wrong, stop and start a new recording.
- While a run is recording, Start on Home, a race button and the notification take you back to it instead of opening a new setup; Home's row for it reads "Recording…".
- A time or distance goal comes back after the phone closes the app mid-run.
- Picking the boss starts from Freestyle, so a past run kept as Where no longer blocks the attempt.
- On a phone-sized web page, a stat's unit sits under its number, so "5:36 min/km" tiles no longer run together.
2026-10-03 — One way into a race (cycle 59)
- Every race button opens the Ready screen set up for that race: "Race my best", "Race the record" and "Run it" on Routes, "Race this run" on a friend's run or one of your own, "Race it" on a challenge, "Race" on a hero, the ladder's "Challenge", Home's next race, and "Start recording" after sign-up. Check the setup, add a goal if you like, and GO is one tap with the same 3-2-1 everywhere.
- A race you start this way shows up in your recent setups, like any other.
- Your favourite routes sit as chips under Where, so racing your best on a favourite is four taps from Start.
- The ladder's boss attempt is used when you tap GO, not when you open the Ready screen, so backing out costs nothing.
- Live races and an event's live start keep their own start: the server's countdown is the GO.
- On the web, cancelled events sort last under "Your events".
2026-10-03 — Start → GO (cycle 58)
- Start on Home opens one screen to get going: what you're doing (run, walk, ride…), where (Freestyle or a route), with whom (nobody, yourself, a hero, the boss, a friend's run) and a goal, each showing its current choice. A sheet sets its row and closes; you never land on a second step.
- The first time, everything is already set for a plain recording, so recording a run is two taps: Start, then GO.
- A goal can go with an opponent: "Run · Freestyle · vs Hermes L8 · 30 min" races Hermes and stops and saves at 30 minutes with the race's result. 20 min, 30 min, 5 km and 10 km are one tap; "Custom…" takes any time or distance, or a pace to beat.
- Your last three setups show as chips at the top, so running the same thing again is one tap; "Just record" goes back to the plain defaults.
- The screen tells you whether GPS is ready ("GPS ready · ±8 m" or "Finding GPS…") before you go; GO is never blocked and starts a 3-2-1 countdown you can skip with a tap.
- In the list of runs to race, long captions wrap instead of cutting off "by effort" at large text sizes, and when there is no one to race it says why friends' runs may be missing.
2026-10-02 — Pick an opponent by what you'll really race (cycle 57)
- When you pick a friend's or community run to race on the phone, the list shows the distance and time you will actually race ("1.10 km in 6:05"), without the start and finish the runner keeps hidden.
- Home's average pace for the week counts moving time, like a run's own detail, so the two agree.
2026-10-02 — Races keep your start and finish private (cycle 56)
- When a friend (or anyone, if your profile is public) races one of your runs by effort, the race starts where your shared track starts and ends where it ends: the hidden stretches around your start and finish, and how long they took, stay yours. The official result is worked out against that same shared part, so it agrees with what the phone showed.
- "Race this run" knows when the part you share is too short to race and says so ("Too short to race outside the hidden start and finish"); when it can be raced, it says you race the part they share.
- When a race against a recording is decided, the race screen stops on the result ("Finished · You won by 0:12") instead of letting the gap keep growing after the other run has ended; a freestyle effort race shows how much of the other runner's effort you have covered ("260 m of 1.09 km"). A lost race reads in amber on Home and in the run's detail, a win in green.
- A race that cannot start has a back arrow and goes back to the run you came from; when a friend now hides more of their run's start and finish, it says so.
- On a route page, the leaderboard's header reads as separate words on narrow screens, "(you)" keeps its space and the date stays on one line.
2026-10-02 — Replies find you (cycle 55)
- When you comment under a friend's run and someone answers after you (the runner or another friend), you hear about it: "Anna replied where you commented" on the phone's Home and in the Friends badge, in the "Comments for you" card on the web feed and in the Monday mail. One tap opens the thread. It stops as soon as you can no longer see that run: you are no longer friends, they went private, the run was deleted or you deleted your comment.
- "Race this run" on a friend's run on the phone races it by effort, on any track, with their name on the race screen. Once the race has started, Home remembers it, so "Same again" races it once more. A run too short to race says so, and a race that cannot load its opponent leaves no run behind.
- Smaller fixes: tap anywhere on a feed card to open the run; the top of a comment thread says "Open run" and whose run it is; a run that is not shared with you offers "Back" instead of "Try again"; a challenge with hidden ends says how long the sender took over the part you race ("You race 1.10 km in 5:32"); one kudos reads "Anna gave kudos on your last run", not "1 kudos".
2026-10-02 — A friend's run on the phone (cycle 54)
- A friend's run opens on the phone: tap "View" on their card in Friends, or "Open run" at the top of any comment thread (so a comment on Home leads straight to the run). You see their name and the date, the map without their start and finish ("Start and finish hidden"), distance, effort, time, paces and climb, any race or event result, the elevation profile, the splits, kudos to give or take back, the latest comments and Challenge. Delete, Share, the public link and Race this run stay theirs alone, and nothing of their run is stored on your phone.
- A challenge whose sender hides the ends of their runs says what you will race before you accept it: "1.1 km · start and finish hidden" on the phone, "You race 1.1 km — Leon hides the first and last 200 m" on the web.
- On a route page, "My runs on it" shows the time and pace over the part the board ranks, the same numbers as the leaderboard, and says so.
- Home's "Friends this week" card, friend count, kudos line and comments now refresh whenever you come back to Home and when a run finishes processing, instead of only when the app starts.
2026-10-02 — Open a friend's run (cycle 53)
- A friend's run opens on the web: the stats, the moving time, the splits, the elevation profile, the map and any race result, with kudos to give or take back and the whole comment thread to join. The map leaves out the owner's start and finish as their privacy setting says ("Start and finish hidden"), and the coordinates never reach your browser. Delete, Share, the public link, Export GPX, Save as route, the sport and Compare stay the owner's alone. Only friends of a runner who is not private can open it, as with kudos and comments.
- Every card in the feed has a "View" link to the run's page.
- When your GPS jumps mid-run, the elevation profile on the web and on the phone shows two pieces with a dashed seam instead of a vertical cliff, and the pace under your cursor never spans the jump.
2026-10-02 — Your door stays off the map (cycle 52)
- Nobody but you sees where your runs start and finish: a shared run, your public run page and its link preview, a route made from your run, a friend racing your ghost or a challenge, and an event on your route all show the track without its first and last 200 m. Distances, times, effort, splits and the elevation profile stay as they were, and you still see every metre of your own runs. Choose Off, 100 m, 200 m, 500 m or 1 km in Settings on the web (with a preview of your last run as a friend sees it) or under Privacy in the phone's menu. It is on at 200 m for everyone, so links you already shared now hide their ends too.
- A route whose owner hides the ends is raced over the part everyone sees: running just that part counts on the route's board and in an event on it, and every time on the board, the owner's included, is measured over that same stretch. Route and event pages say the start and finish are hidden; your own run and route pages remind you what others see, with a link to change it.
- Every map on the web marks the start with a green dot and the finish with a red one.
2026-10-02 — The map stops drawing through a GPS jump (cycle 51)
- When your GPS teleports mid-run, every map now shows the track in two pieces with a gap, not a straight line through the city: the run page on the web, the page you share, your public run page and the link preview, as run detail on the phone already did. Runs recorded before today keep their straight line until they are reprocessed.
- Deleting a comment no longer resets the ten-a-minute limit. On the phone, the badge on Friends stays whole with large fonts, feed cards without comments lose their empty band, and sending a comment closes the keyboard so you see it land. On a phone-width web page, the public link of a shared run gets its own row.
2026-10-02 — One distance, on the phone and the server (cycle 50)
- The distance you see when you tap Stop is the distance your run keeps: the recorder, run detail while it waits for the server, and the processed run now use the same GPS filter, so they agree to the metre. A GPS glitch that teleports the dot costs no distance and no longer swallows the rest of a walk; a real gap, like a tunnel, counts the straight line once, everywhere, and landing on higher ground after a jump adds no climb or effort. Before the server answers, run detail says these are the phone's numbers and that effort updates on sync; its map no longer draws a glitch as a spike. Runs recorded before today keep their numbers until they are reprocessed.
- Splits are cut at the exact kilometre: 1, 2, 3 at 1.00 km each with that kilometre's time, effort and climb, then the partial tail, so a GPS gap never makes a 1.40 km "split 1".
2026-10-02 — Comments on runs (cycle 49)
- Say something under a friend's run: a comment box on every card in the web feed, a Comments section on the run page, and a new Comments screen on the phone, reached from the feed row and run detail. You can delete your own comments and any comment on your runs; every other comment has Report. Comments are plain text, up to 500 characters.
- "Ben commented on your run" on Home (with a badge on Friends until you look), at the top of the web feed as "On your runs", and in the Monday mail. Strangers see nothing, and shared and public run pages show no comments. On a phone-width screen the run page's splits table now fits without a sideways cut.
2026-10-02 — The recorder map, polished (cycle 48)
- A map you can read while you record: the streets show under your orange line on every map, and the MapLibre logo no longer covers a third of the small map (the map data credit stays, in the corner). After a GPS gap, such as a tunnel, the line starts a new segment instead of a spike across the map. On a route you picked, the map marks its start, says where it is ("Start 420 m NE") and frames you and the start until you get there.
- The recorder tidied up: the sport chips fold away again 100 m after you reopen them, the tiles say PACE NOW and AVG EFFORT PACE, and with large fonts the Stop button always fits, with a small map strip when there is room. In a race, a spoken line fades from the screen after 8 seconds so it never contradicts the moving gap. In Start, the limit card shows its presets only after you tap Time, Distance or Pace to beat, and the hero row fades where it scrolls.
- A lone finisher reads "Finished Riverside 5k" instead of "1st of 1", everywhere a placing is written, a result in a cancelled event no longer reads "provisional" (it is final), and the phone and the web now show the same metres and the same pace for the same run (333 m, not 332 m; 5:27 /km, not 5:26).
2026-10-01 — Share your event result (cycle 47)
- Your event placing travels with your run: a shared run page (and a public runner's run page) reads "3rd of 12 in Riverside 5k · provisional" with a link to the event and "Presented by Acme Coffee" with the sponsor's logo, and the link preview card says the same. A friends-only event never shows its name or sponsor on a page a stranger can read.
- Share it in one tap: "Share your result" on the event page's "Your result" card makes the public link with Copy, Open and Stop sharing, and the phone's event screen opens the share sheet with "3rd of 12 in Riverside 5k in 22:31, presented by Acme Coffee". Sharing a run from run detail now leads with its placing, and an event with nobody else in it yet offers "Copy link" right on the roster.
2026-09-23 — A map while you record (cycle 46)
- See where you are while you record: the recorder shows a map with your dot and the line you have drawn so far, and it comes back after the app restarts mid-run. On a route or one of your runs picked in Start, its line and "On Riverside loop" are there too, so you can follow it. After 300 m the sport chips fold to "Run · change" to make room; one tap brings them back.
- In a race by effort or against Metronome, the opponent stays on the map while they are within a kilometre. Chip rows that run off the screen (Start, the limit card, Draw a track, Routes, the leaderboard, the feed, the hall of fame) fade at the edge where there is more to scroll, and no limit tab looks picked before you pick a limit.
2026-09-23 — Event sponsors on the club plan (cycle 45)
- Put sponsors on your event: on the new Club plan (for run clubs, teams and race organizers) an organizer adds up to three sponsors with a logo, a link and a short blurb. The event page shows them ("Presented by" the first, "Supported by" the rest), the link preview card says "Presented by Acme Coffee" with the logo, and every runner's result reads "3rd of 12 in Riverside 5k · presented by Acme Coffee" on the event page, the run page and the Monday digest. The phone's event screen shows the sponsor too.
- Logos are uploaded and served from CoRunner itself, re-drawn as a clean PNG; sponsor links open in a new tab and every sponsor block has a "Report" link. Club is on /pricing next to Free and Plus. Organizers are also told when their event's route is not public, so they can share it again.
2026-09-23 — Event live start (cycle 44)
- Start an event together: ten minutes before the start the live start opens on the phone. Open the event, tap "Open the start" and you are on the race screen with a countdown; at the gun everyone in the room starts at once, the screen shows your place and who leads ("3rd of 12 · Anna leads by 120 m"), the voice tells you when your place changes, and the finish line is the event's distance by effort. Missed the gun? You can still join for ten minutes, and any run in the window still counts.
- The phone has an Events screen (upcoming with "Starts in …", past with where you placed), reminds you 15 minutes and a minute before a joined event starts, and run detail reads "3rd of 12 in Riverside 5k · provisional" for a run from the live start. The event page on the web shows "Start open · 7 in the room" while it happens.
2026-09-23 — Reliability (cycle 43)
- A run you delete on the web now leaves the phone at the next sync, and a hiccup at the elevation service no longer fails a run: it stays "processing" and comes through, from the phone's own altitude if the service stays down.
- The week's numbers agree: the dashboard's ring, tiles and goal line, the phone and the leaderboard all count Monday to Sunday (UTC). Friends without a run this week show "–" instead of a rank, run detail says how much of the time you were moving, the phone's weekly tiles no longer run into each other, and a race stopped at once asks before it is saved.
2026-09-23 — Event results (cycle 42)
- Run an event you joined and your result appears on its page by itself: a leaderboard by finish time on a route, or by effort pace on a distance (hills count, so different courses compare fairly), with "You finished 3rd of 12" and your best attempt counted. Runs you did in the window before joining count too. Results are provisional while runs can still sync and official an hour after the window closes.
- Finished events stay under Past on
/eventswith where you placed, the event's preview card shows the winner and the number of finishers, the run page says "3rd of 12 in …", and the Monday digest tells you where you placed and which event is next. Organizers pick "Rank by" when they create an event.
2026-09-23 — The happy flow (cycle 41)
- Pick the sport before you start: Start opens on chips for Run, Walk, Hike, Trail run, Ride and Other, and Freestyle records what you picked ("Freestyle · Walk · just record"), also when you repeat it with "Same again". The recorder says "Recording walk", its sport chips wrap so none is cut off, and moving time shows under the clock once you have paused.
- Hold to stop and land on the result: Stop on the recorder and in a race is a 1.2 s hold with a filling ring, so a pocket tap does nothing, and a finished recording opens its run page. A recording under 50 m asks whether to discard it. The recorder and the race screen stay upright when the phone turns, the "Same again" line under Start says "Hold Start to repeat", and Home reads cleanly at a large system font.
- Web splits readable on a phone: the split columns no longer run together at 390 px, a partial last split is shown by its length and marked "partial", and a note says split pace is over each split's elapsed time while the averages are over moving time.
2026-09-23 — Events (cycle 40)
- Create an event on the web: a public route or a distance, a start time and a window during which runs count, and who sees it (public, friends or unlisted). It gets its own page at
/events/<slug>with the date, the track, the organizer and the roster, and a card for chat previews; share the link. - Anyone who opens the link can join from the page, and a new runner who taps "Sign up to join" lands back on it already joined. Joining an event on a route stars that route, so it waits under Favourites in the phone's Start picker. Results come in a later release.
2026-09-23 — Limits (cycle 39)
- Start step 2 has "A limit": a time (10 to 60 minutes, or your own) or a distance (1 km to a half marathon, or your own) on any track. The recorder shows the countdown, the voice counts down (halfway, five minutes, one minute, thirty and ten seconds; one kilometre, 500, 200 and 100 metres) and the run stops and saves itself at the limit. "Same again" repeats it.
- A pace to beat on Freestyle: a distance in a time, raced on the race screen against Metronome, a steady-effort ghost at that pace that stops the run at the distance. The result ("Beat the 5:00 /km pace by 0:12 over 5.00 km", "30 min limit · 5.62 km") shows on the phone and the web; the server decides whether a limit was reached from the processed run.
2026-09-22 — Race any run on any track (cycle 38)
- Start step 2 offers your own runs, friends' runs and community runs from anywhere on every track: Freestyle, a route or a drawn track. The opponent runs beside you by effort (equal effort metres at equal time, so the hills count), with the gap, the map marker and the voice as in every race; the server replays the same rules and confirms the result, which says "by effort" on the phone and the web.
- Heroes follow a drawn track's profile.
2026-09-21 — Seasons (cycle 35)
- The ladder resets every quarter: the rungs start again from the Gatekeeper at a fresh pace; your perks, throwables and Grit stay. Each season's top rung goes into a hall of fame per sport (Ladder → Hall on the web, Hall of fame on the phone), on your public profile and in the digest of the week the season ends.
2026-09-21 — The ladder (cycles 31–34)
- Twelve bosses per sport, paced from your own runs: one 2 km run opens the ladder, one attempt a day, and the server's replay of your track is the official result. Every processed run earns Grit.
- A shop: spend Grit on perks (Head start, Tailwind, Hill legs, Second wind, Kick, Extra pocket) and throwables; equip a loadout before a boss race, and every run of 3 km or more drops a throwable.
- Throw from the race screen: a Banana stalls the boss, a Net slows it, Fog stops its surges, a Boot kicks it back, a Sandbag makes it fade early. The replay re-validates every throw.
- The boss fights back from rung 4: taunts when it passes you, counter-surges from Storm, Hermes and Phoenix, and from rung 7 a Net of its own. Boss wins show in the feed with a trophy, on share cards and in the weekly digest.
2026-09-21 — The phone matches the web (cycle 30)
- The Android app wears the web's palette: warmer surfaces, lifted cards with a mint glow on the ones that matter, gradient buttons, a faint contour texture on Home and Login.
- Numbers line up (tabular figures) on every stat.
- The Play screenshots are new.
2026-09-21 — A logo for CoRunner (cycle 29)
- CoRunner has a mark: a runner and the ghost one stride behind, in mint on ink. It is the favicon, the launcher icon, the Play Store icon, the link preview card and the header of the site and the app.
- The web app is installable: a manifest with 192 and 512 px icons and an Apple touch icon.
2026-09-21 — Multi-sport part 3 (cycle 28)
- The leaderboard, the dashboard's friends card, the feed and the routes list can be read per sport on the web and the phone; "All" on the board adds effort metres across sports as a rough sum, and the board says which sports are present this week.
- Routes match within one sport: a ride along a running route no longer lands on it, and a reclassified run re-matches when it is reprocessed. Routes can be listed per sport.
- Challenges and live races carry their sport into the recorder: racing a challenged ride records a ride, a freestyle live race takes the creator's default sport (or the one asked for) and the lobby shows it.
- Heroes say "Runs only" in the catalog; walks, hikes and rides race ghosts and friends instead.
- The words follow the sport: "Race your Sun 21 Sep walk", "Beat Ann by 2:57 on a 5.02 km ride", "Ann wants you to beat this hike", and the dashboard week reads "3 runs · 1 ride".
2026-09-21 — The app is now CoRunner
- The app is called CoRunner everywhere you can see it: the site, the phone app, emails, the weekly digest, share and invite texts, exported GPX files and the store listing. The home of the web app and the API moves to corunner.app; contact is [email protected].
- The Android package id is now
app.corunner, which makes the current test build a fresh install (no store release has shipped yet, so nothing carries over).
2026-09-21 — Multi-sport part 2 (cycle 27)
- Effort follows the sport: runs and trail runs keep Minetti's running cost, walks and hikes use Minetti's walking cost, rides a gradient placeholder until power support, and "other" counts distance as effort. Every run shows which model scored it.
- Reclassifying a run on the web recalculates its effort, splits and model within a minute;
corunner-cli reprocessrecomputes stored runs after a model change. - Rides read as km/h everywhere, including the phone's spoken status line ("Effort speed 18 kilometers per hour"); the weekly goal is in effort kilometres and says so, and the Monday digest counts "3 runs, 1 ride".
- Heroes are runners: the phone's hero setup says so when another sport is picked.
2026-09-21 — Multi-sport part 1 (cycle 26)
- Pick the sport on the phone: run, walk, hike, trail run, ride or other, remembered between activities and changeable mid-run. The recorder keeps a ride's speed and still drops a runner's GPS jumps.
- The sport shows everywhere on the web: run list, detail, feed, public run and profile pages, with a sport filter on the list, a reclassify form on the detail page, a default sport in settings and km/h for rides. Effort for rides is provisional until the sport-aware model lands.
- GPX imports guess the sport from the file's type or the median moving speed.
2026-09-21 — Visual refresh of the web (cycle 25)
- A warmer, layered look: navy-charcoal page with a faint contour texture, lifted cards, mint gradients on the hero cards and buttons.
- Public run and profile cards, link previews and the Play feature graphic use the same palette.
- The landing hero shows what changed last, linking here.
2026-09-21 — Live races part 3 (cycle 24)
- The result on the phone turns from Provisional to Official on its own: the socket stays open for the server's replay, and the lobby polls the race when the socket is gone.
- A live race sounds like a ghost race: "Lost Ann's signal", "Ann is back", "Ann finished in 12 minutes 3 seconds", and your own finish no longer claims a verdict the server has not given.
- The lobby shows who you are up against: initials and this week's effort next to each seat.
- Server log retention: captured errors (30 days) and delivered mail (90 days) are pruned daily;
corunner-cli retentionruns it by hand.
2026-09-21 — Playwright smoke in CI, error reporting, compare runs (cycle 23)
- A headless browser walks register, dashboard, Companions, Settings, log out and log in on every push, plus the public pages.
- Server errors, browser errors and phone crashes land in one place;
corunner-cli errorsgroups them, an optional webhook pings. - Run detail: pick another run to compare, both tracks on the map, a dashed second profile and a delta table.
2026-09-21 — Play Store listing kit, changelog page (cycle 21)
- Release builds sign with the upload key from CI secrets; a
v*tag builds a Play-ready bundle and an arm64 APK. - The launcher icon is the bolt on ink; the phone's overflow shows the exact build.
- Store listing copy, data-safety answers, feature graphic, icon and an emulator screenshot script in
store/android/. - This changelog and the /changelog page.
2026-09-21 — Route library (cycle 20)
- Save a processed run as a named route; later runs on it are matched automatically.
- Route pages with map, profile and a leaderboard by effort pace; private, friends or public.
- On the phone: Routes screen with "Race my best" and "Race the record".
2026-09-21 — Weekly digest email, stats readout (cycle 19)
- A Monday email with your week, the friends' top 3 and one thing to do; silent weeks send nothing.
- One-click unsubscribe and a digest toggle in settings.
corunner-cli statsfor a quick readout of the numbers.
2026-09-21 — Web mobile nav, chart hover, run filter (cycle 18)
- Bottom tab bar on phones (Home, Runs, Feed, Friends, More).
- Scrub the elevation chart on run detail: distance, altitude, grade and effort pace, synced with the map and the split table.
/runs?kind=filter pills with counts.
2026-09-21 — Live races, part 2 (cycle 17)
- Official results: the server replays every runner's recorded positions and rewrites effort, time and rank.
- Same-route live races from one of your processed runs, raced on the map like a ghost.
- Stale lobbies are cancelled and silent runners marked DNF;
/races/[id]shows ranks and both replays on one map.
2026-09-21 — Live races, part 1 (cycle 16)
- Live races between friends: create a room, invite, ready up, countdown, race by effort in real time.
- Positions stream over a WebSocket with reconnect and replay; the server checks reported finishes against recorded positions.
- Read-only live races block on
/challenges.
2026-09-21 — Transactional email (cycle 15)
- Email verification on sign-up, welcome mail, forgot and reset password.
- Log mailer by default, SMTP when configured; Mailpit in the dev compose file.
- The referral reward now requires a verified account.
2026-09-20 — Referral reward, sync after login (cycle 14)
- A friend who signs up through your invite and finishes a 1 km run unlocks a Plus hero for both of you.
/friendsshows who joined and the next hero to unlock; settings lists bonus heroes.- The phone syncs right after login so entitlements and settings arrive before the first run.
2026-09-20 — CoRunner Plus scaffolding (cycle 13)
- Plans and entitlements (heroes, level cap, live races, glasses, heart rate); everyone has Plus while CoRunner is in testing.
- "Notify me" form on
/pricing;corunner-cli plan setto grant Plus by hand. - Locked heroes show a Plus pill on the phone.
2026-09-20 — Weekly goal, streak, next race (cycle 12)
- Weekly goal in effort metres with a ring on the phone and the dashboard.
- Streak of consecutive weeks with a run.
- "Next race" card that suggests an unraced run, a level up, or Shadow.
2026-09-20 — Activity feed with kudos (cycle 11)
/feedwith friends' runs and race results, kudos, load more; "Friends' latest" on the dashboard.- Feed screen on the phone with a kudos toggle.
- Shared run pages show how many runners gave kudos.
2026-09-20 — Phone adopts server runs, recorder re-anchors (cycle 10)
- Runs imported on the web or recorded elsewhere appear on the phone and can be raced as ghosts.
- The recorder re-anchors after a stale first fix instead of rejecting the whole run.
- A race stopped early no longer fails processing.
2026-09-20 — GPX import and export (cycle 9)
- Import GPX files on
/runs; duplicates are detected; files without timestamps are refused. - Export any processed run as GPX with the corrected altitude.
- The GPX code moved into the shared core.
2026-09-20 — Weekly friends leaderboard (cycle 8)
- Monday-to-Sunday leaderboard by effort metres among friends, with a week switcher.
- "Friends this week" on the dashboard and the phone Home.
- "Challenge the leader" nudge.
2026-09-20 — Phone first-run experience, backups (cycle 7)
- Three-page intro after the first login, permissions explained before the system prompt.
- Next-step cards on Home; overflow with privacy, terms, version and log out.
- Nightly database backups with 14-day retention on the server.
2026-09-20 — Share from the phone, challenge race line fix (cycle 6)
- "Share result" on the phone mints the public link and opens the share sheet.
- Finishing a race lands on the run summary.
- Challenge results without a phone-side time difference still show their race line.
2026-09-20 — Invite links and a pricing page (cycle 5)
/join/<handle>invite links; signing up through one sends the friend request automatically.- "Invite a friend" on
/friendsand on the phone. /pricing: Free vs CoRunner Plus.
2026-09-20 — Public share page with an OG result card (cycle 4)
- Share a processed run by link: map, stats, elevation, race result and a call to action; revoke at any time.
- A result card image for social previews.
- The split table highlights your fastest kilometre by effort.
2026-09-20 — Android accept-and-race a friend's challenge (cycle 3)
- Challenges screen on the phone: incoming, sent and past; accept and decline.
- Accepting caches the challenger's run so "Race it" works offline; the result closes the challenge.
- CI builds the debug APK.
2026-09-20 — Async challenges (cycle 2)
- Challenge a friend to beat one of your runs; they race your ghost when it suits them.
/challengeson the web with create form, lists and a dashboard banner.- Challenges expire after 14 days.
2026-09-20 — Foundations for growth (cycle 1)
- Landing page rebuilt: how it works, the effort model, the hero roster, FAQ.
- Titles, descriptions, Open Graph cards, sitemap and canonical URLs.
- Privacy policy and terms pages.