Loading...

Release Notes

What's New

Updates and improvements to NavRun

August 23, 2026

v2026.8.23.3

Your Sunday evening stops counting as next week.

  • If you are west of UTC, the server's date rolls over before yours does. On a Sunday evening the Plans page could show last week's mileage as "this week" above a calendar that had already moved to next week. The page runs on one clock now, and where NavRun knows your timezone that clock is yours.
  • Building a week on a Sunday evening could also mark the week you were still in as finished, which then hid it from the today card. Every path that builds a week now reads your day, not the server's.
  • The nudge that watches your week against its target now reads this week's target only. If this week has no plan it says nothing, instead of measuring you against a week you are not in.
  • Siri answers from your phone's date too. "What's my run today" was asking the server which week you were in, and on a Sunday night it could say nothing was scheduled while the app showed the run.

v2026.8.23.2

Build next week's plan on a Wednesday and you keep the rest of this week.

  • Planning ahead used to blank the today card. NavRun would tell you next week was planned, for the whole rest of the week, with nothing on the card for today, while this week's plan sat in your account the entire time. Today's run is back.
  • Generating several weeks in one go did the same thing harder. Every week you build is live at once, and the card was reading the furthest one out, so it could tell you next week was unplanned with eight weeks planned.
  • The Plans page, the Claude connection and "what's my run today" were all reading the same way and are all fixed together, so they name the same week you do.
  • If this week has no plan and next week does, the card still points you there. On the Plans page and through Claude, where several weeks can be planned at once, you now get the nearest one rather than the furthest.

v2026.8.23.1

Ask your phone what today's run is, without opening the app.

  • "What's my run today with NavRun." Also how your week is going, your records, adding a race, and logging how a run felt. Each one is a Shortcut as well, so you can put it in an automation.
  • Your runs and races turn up in the search on your phone now. Three letters finds a race you entered months ago.
  • The search index lives on your phone and holds nothing but your own runs and races. There is a switch for it under All settings, "Find runs in search", and turning it off takes the entries back out rather than only stopping new ones.
  • Signed out, none of it answers with anything.

August 22, 2026

v2026.8.22.7

The catalog can now say which year a course's GPX file actually describes.

  • A GPX file being old was never the problem. Some races have not moved their route in years, and an old file on one of those is still correct today. The problem was an undated file being served as the current course when it was not: one race's download is still internally named for 2021 and shows up as this year's course with nothing saying otherwise.
  • A course can now record the year its route was recorded, separate from the year it is being offered. The two are allowed to disagree, and that is the point: a course with no route change since 2021 keeps its 2021 file, and a course whose route changed this year is no longer covered by an old one with nothing marking it stale.
  • This is what the catalog holds. It is not on a race page yet.

v2026.8.22.6

What it looks like out there now leads with the pictures, not a paragraph.

  • The course-preview section still opens with the same words: somebody has been out there with a camera. Now the first thing after that is a grid of what they made, not a block of text before you reach any of it.
  • The section says up front how many people have documented the race: one person, or how many, or, for races nobody has covered yet, that a gap means nobody has found it, not that it is not out there.
  • A podcast, a written report, a photo gallery and a forum thread still never open as a player. They show in the same grid as the videos now instead of a separate pile underneath.

v2026.8.22.5

A race page stops guessing where its own data runs out.

  • The aid station table no longer prints a leg it cannot stand behind. A course whose station list stops early was showing the gap to the finish as a real number, mile for mile, when the truth is nobody has entered the stations in between. That leg now reads "?" until either the list is filled in or a person marks the course verified.
  • A course a race is not running this year says so before anything else on the page, not in small grey type below the same red pill the current course wears. Leadville's traditional 100 Mile course, rerouted around by wildfire for 2026, is the case that found this.
  • The aid station table keeps Mile and Station in view while Crew, Bag, Pacer, Med and Cutoff scroll under your thumb, so a mark five columns over on a 29-row table still ties back to the right stop.
  • The catalog listing stopped repeating a race's state twice in its own location line.

v2026.8.22.4

Race pages stop talking about themselves and go back to talking about the race.

  • Some pages had started showing their own workings: a status line dated "as of this fill", a course note explaining which database column a figure went into, an aid station saying there is no field for restrooms. That is us talking to ourselves in front of you. It is off the pages now, and the facts underneath it are still there, said plainly.
  • Dates say the date. "Registration open as of this fill (2026-08-21)" now reads "Registration open as of 21 August 2026", which is the thing you wanted to know in the first place.
  • Every note that came off a page was kept on our side, so nothing anybody researched about a race is lost.
  • The browse list said the state twice. Perryville, AR, AR, US is now Perryville, AR, US.
v2026.8.22.3

The films on a race page are filed as what they actually are.

  • Somebody's account of the day they quit, and a first-timer's guide to the race, were both landing in the same pile as a race report. Those are the two things a runner who is not sure they belong goes looking for, and they were the two hardest to find. They are their own kinds now, along with crew and pacer accounts, course walkthroughs, interviews and the rest of what people actually make about these races.
  • Podcasts you listen to, reports you read, galleries you look at and forum threads all say so, and show up as something to open rather than a player that was never going to play.

v2026.8.22.2

See what a race is actually like before you decide you can finish it.

  • Race pages now carry the course previews, films and race reports people have made about that race, with the video playing right there on the page. A table can tell you the climb is four miles long. Twenty minutes of somebody walking it tells you what four miles of that does to a person at 3am.
  • There is a new page at navrun.app/ultras/watch with everything we have gathered, across every race we hold, filterable by what kind of thing it is. Handy when you have not picked a race yet.
  • Videos play through YouTube's no-cookie player, so watching one on a race page does not follow you around afterwards.
  • Seen a good one? Every race page has a form to send us the link. A person watches it before it goes anywhere near the page, and we credit whoever made it.
  • What gets in is footage of that course, on the ground. If a video would be just as true of any other race, it does not go up.
  • Free, like the rest of the catalog, and no account.

v2026.8.22.1

Race pages stop saying "does not apply" where nobody actually checked.

  • A page only says a question does not apply to a race when somebody checked every field behind that answer. "Lottery" is written from three fields and "Field cap" from two, and one of them being marked was enough to print "does not apply to this race" over a question nobody had asked.
  • The aid station table says it too. A stop with no cutoff by design, or one a race says a crew cannot reach, drew the same "?" as a stop nobody has looked at yet. The legend has a fourth mark for it.
  • A stage race reads as one entry on the catalog list, not a menu. Marathon des Sables was printing its six days as six distances you could pick from, and the distance filter was handing it back as a 100K. It now reads "6 stages, 167.78 mi total", and a stage is never returned as a distance you can enter.
  • Filling in a fact that was marked "does not apply" clears that mark instead of leaving both on the page.

August 21, 2026

v2026.8.21.4

Race pages only go up once someone has actually researched the race, and the catalog can now hold six things it was losing.

  • A race we have not researched yet no longer has a public page. We are adding thousands of races to work through, and each one starts as a name and a state and nothing else. Those are ours to fill in, not yours to read, so they stay out of the catalog, out of search, and out of the site map until there is something on them worth your time.
  • A race can now say what you may NOT bring. Big's Backyard does not allow trekking poles. Badwater does not allow cooling vests, poles, wheeled conveyances or IV fluids. We had no way to write that down, so a ban either vanished off the page or sat in the list of things to pack, which is the version that gets someone pulled at a check.
  • Water treatment is its own line on a kit list now, separate from how much water you carry. Hellbender asks for a filter or tablets because the legs run long between creeks, and that is a different thing to buy than a bigger flask.
  • Course records and winning times both fit, including when they disagree. Badwater listed a course record of 21:33:01 next to a 2026 winning time of 20:53:41 on the same site. We hold both and say they disagree, rather than picking one and hoping. Backyard and fixed-time races finally have somewhere to put a result at all: a lap count, or a distance, instead of a time.
  • When a race's own website contradicts itself, the page can say so and show you both pages. Three of the last three races we filled had one page already on next year while another was still on this one. That is normal and it is not the race being careless, but it used to leave us quietly choosing.
  • A course that comes back through its own start line partway round can say that. Hellbender passes back through Camp Grier at mile 83.4 with sixteen miles still to run, which means a crew can wait in one car park and see their runner twice.
  • We can now hold every finish time from a race, with no names attached to any of them. Not to rank anybody. So that a runner who is not sure they are fast enough for a hundred can see how many people came in during the last two hours, on that course, under that cutoff. There are no names, no bib numbers and no places in it, and there is nowhere to put one.

v2026.8.21.3

Race pages stop asking you to go and find things that do not exist.

  • Running Stones and ITRA points now say which way they run. A race page showing "2 Running Stones" is telling you what finishing it is worth, and that is not the same as what you need to hold to enter. We were storing both in one number, so a race that asks for nothing could read as if it asked for something. If you looked at a race and thought you were not eligible, look again.
  • When a race genuinely has no answer to something, the page says "does not apply to this race" instead of "not checked yet". Hardrock is not in the points system on purpose. A backyard has no overall cutoff, because the format has none. Those are answers, and the page was printing them as gaps.
  • A stage race now reads as a schedule. Marathon des Sables is six days you run in order on one entry, and listing its stages next to each other looked like a menu you could pick a day from. The page shows them numbered, dated and in order, with a line saying you enter the race and not a stage.
  • Multi-lap races now record each lap's length separately. Javelina's first loop is 22.3 miles the long way round and the other four are 19.45, so its five laps are 100.1 miles and not the 97.25 you get by multiplying one lap by five. This is what the catalog holds. The lap list is not on the race page yet.
  • The "how much of this is filled in" number on a race page drops a few points across the whole catalog. Nothing was removed from any page. We track four more facts about a course than we did last week, so the same filled-in page is now a smaller share of a longer list, and the number went down while the page stayed the same.

v2026.8.21.2

The race pages now take what you know back, and there is a way in to them from the menu.

  • Every race page has a form at the bottom for the three things a reader can send us: what you wish someone had told you before you ran it, a correction to something that is wrong or out of date, and a note from the race director. No account, and nothing you send shows on the page until a person has read it.
  • If a race has no official GPX on file, the map says so and asks for the link to the one the race publishes. We fetch the file from there, so the page can say where the line came from.
  • "Race guides" is now in the menu, the sidebar and the footer, so the catalog is reachable without typing the address.
  • The crew section says what a drive time is measured from. The number is the drive from the stop before it on that crew route, and printing it as a plain "20 min drive" read as if it were from the start line.
  • Filtered views of the catalog now point search engines at the plain /ultras/ page instead of asking to be listed as their own, and each race page carries its facts in a form an AI assistant can read and cite.
  • In the iPhone app, searching the catalog from the race form works. It was asking the server for the right thing and then failing to read the answer, so every search came back empty and looked like a race we do not hold.

v2026.8.21.1

Fixed the sitemap so search engines can index the site again.

  • A blog post republished in August had an update date that the sitemap could not read. Every search crawler that visited got an error instead of the page list, so the index was not refreshing.
  • No pages were missing. The fix restores the sitemap so crawlers can find and update every page as normal.

August 20, 2026

v2026.8.20.5

A race catalog anyone can read, with no account and nothing to pay.

  • Every ultra we hold now has a page at navrun.app/ultras: the aid stations in order, the cutoff at each one, whether your crew can get there, whether a drop bag can, and where a pacer picks you up. It is free, and it stays free.
  • Anything nobody has checked says "not checked yet" instead of guessing. A blank is never read as a no, so the page will not tell you your crew is shut out of a stop when the truth is that no one has looked.
  • A zero is now printed as a zero. Forty starters and no finishers is a real ultra result, and the page used to file that finish count under "not checked yet" while the finish rate said 0% right next to it.
  • Filter by distance and you get races that actually run that distance. A weekend with a 30K and a 100 miler was turning up under every band, including the three it has nothing in.
  • The aid station map draws three kinds of stop, not two. A stop the race says your crew cannot reach no longer looks the same as one nobody has checked.
  • The cancelled and postponed notices now say what happened in our words before the race's own note, and a cancelled race no longer shows an entry button or counts down to a day it is not being run.
  • The map now loads its stylesheet, so it draws as a map instead of a stack of loose tiles.
  • A race with sixty aid stations now loads as fast as one with six. It used to get slower with every stop on the list.

v2026.8.20.4

The free tools stopped turning runners away after the two hundredth calculation of the day.

  • Every visitor to the free calculators was being counted as the same visitor. There is a cap on how many calculations one person can run in a day, and because everyone shared one count, the cap was being reached by the whole site together instead of by one person.
  • Once it was reached, the next runner to open the race time predictor, the pace calculator, the training pace calculator or the ultra fueling calculator got "Too many requests. Try again tomorrow." on their first try, having done nothing.
  • The share cards behind those tools had the same fault, so a result posted to social after the cap was hit unfurled with no picture on it.
  • The count is per person now. The cap itself has not changed.

v2026.8.20.3

Search engines could not read the sitemap. Now they can.

  • One blog post's "last updated" date was written in a way that quietly changed its type from a date to a word. The sitemap builder compares every post's date to find the newest one, and comparing a date to a word crashes. That took down the whole sitemap, not just the one post, so Google and every other search engine got an error page instead of a list of NavRun's pages.
  • The sitemap now protects itself: if a post's date ever comes in a form it cannot use, it skips that value instead of crashing the page for everyone else.
  • All 72 blog posts are confirmed showing up in the sitemap again.

v2026.8.20.2

Open an old run in the iPhone app and its weather comes in behind you.

  • The website already did this. The app did not, so a run with no weather on it stayed blank and nothing went looking. If you only use the phone, a run from three months ago was never going to get weather at all.
  • Now opening the run asks for it in the background. The run loads at the same speed it always did, and the weather is there the next time you look.
  • Treadmill runs are left alone. There is no place to ask about, so nothing is queued.
  • The nightly catch-up used to stop after 300 runs a night, a limit set when each one took about a second. They take a fraction of that now, so it runs for its four minutes instead and clears a backlog in far fewer nights.

v2026.8.20.1

The weather lands on your run the same day you run it.

  • Finish a run this morning and the conditions are on it by the time you open the app. Before this, the weather archive had nothing until the day was over, so a morning run sat blank until the next night.
  • It does not matter what recorded the run. Strava, Apple Health, your phone: the weather comes from the place and the hour you started, not from your watch.
  • Runs older than August 2022 get their weather the same way they always have, so nothing on your back catalogue changes.
  • The weather block now says which service the reading came from.

August 19, 2026

v2026.8.19.7

The read on your training shows up whether or not you have a race booked.

  • "What Your Data Shows" was only appearing for runners with a race on the calendar. If you were between blocks, or finding your way back, NavRun worked it out and then did not show you.
  • It shows for everyone now.

v2026.8.19.6

If your runs come from Apple Health, they now know what the weather was.

  • They never could before. NavRun had the whole route of the run and was not writing down the one point it needed off it, the spot where you started. It records that now, and the weather follows.
  • Weather is on the run in the iPhone app, not only on the website. It leads with the sentence you would say out loud, "84° and humid", and puts the numbers under it.
  • Ask for a run to be read back and the weather goes with it. On an Apple Health run the "Not sent" line used to list weather every single time, because there was none to send.
  • Open an old run that never had weather on it and NavRun goes and gets it in the background, so it is there the next time you look. Before this, a run more than two weeks old that you had never opened would never show weather at all.
  • Opening a run on the website no longer stalls. It used to go looking for the weather while you sat there waiting, which could hold the page for several seconds.

v2026.8.19.5

The iPhone app now asks about your week before it builds it.

  • Tap to make a new plan, or rebuild one you already have, and a tray comes up first. It opens holding what you already told NavRun: your rest days, your long run, how many days a week you run.
  • Per day you can say you can't run, say how long you have, or name the miles you want. You can also set a focus for the week and leave a note.
  • What you change is for that week. Your saved settings are not touched.
  • The rebuild button used to be a yes or no question. It is the same tray now.
  • The tray carries the same "what NavRun is sending" list the website has, read off the payload that actually gets built.

v2026.8.19.4

Three pages now say what people search for, and one says when it was rewritten.

  • The heatmap page was titled "Activity Heatmap". Runners search for "running heatmap". It has been showing up on Google for months and almost nobody clicked, because nothing in the listing matched the words they typed. It leads with Running Heatmap now.
  • The run feedback page had the same gap. Its listing said "AI Run Feedback" while the search was "pacing feedback ai", so it sat there for three months without one click. It leads with pacing now.
  • The analytics page is the Running Dashboard, which is what runners call it.
  • The guide to connecting Strava and Claude was rewritten in August but still told Google it was from June. Next to guides dated last week it looked long out of date, which is most of the reason nobody clicked it. It now says when it was rewritten, and its summary lists the actual steps instead of promising them.
  • Nothing on any of these pages changed. Only the title, the date, and the summary Google shows.

v2026.8.19.3

The iPhone app now shows you what gets sent when a run is read back.

  • Rating a run, and the run's own screen, both carry a "What gets sent from this run" line you can open. It lists what leaves, and it names what does not: your other runs, injury alerts, analytics.
  • The list is built for that run. One with no weather on file and no matching planned run shows four things, not six.
  • It sits above the save button, so you can read it before anything goes anywhere. The website has shown this list for a while; the app does now too.

You can now choose how NavRun uses AI, from the website.

  • The switch only ever existed inside the iPhone app. If you use NavRun on the web you were never asked, which is the whole reason accounts went quiet this morning. It is now on your Preferences page, under a new AI tab.
  • The first time you reach something that would send your training to a model, a new plan, the analytics page, your reports, NavRun asks first and puts both ways to run side by side.
  • Saying no leaves you with a week built from your own runs by rules. Same caps, same rest days.
  • The About page and the Privacy Policy now say why the choice exists, name Anthropic and OpenAI, and spell out what is sent and what never is.

v2026.8.19.2

The AI switch is now one you can reach, in the iPhone app.

  • Settings has an AI section. One switch, on or off, and it takes effect the moment you touch it.
  • Off stops a model writing your week, reading your runs back, the weekly report, race strategy and the plan revising itself. You still get a plan: NavRun builds the week from your own runs, holding your caps and your rest days. Anything already written stays where it is.
  • The screen that asks the first time now shows both ways side by side, with AI and without, so saying no is picking the other one rather than turning something down.
  • That screen also says why there is AI in NavRun at all: knowing how to train for an ultra sits with veterans and with coaches most of us cannot reach, and it is in here so nobody gets gatekept out of this sport.
  • Two messages in the app sent you to Preferences to turn AI on, where there was no such control. They point at Settings now, where there is one.

Tell the app about your week before it builds one.

  • Asking for a plan from your phone now takes the same seven things the website has taken all along: what the week is for, how many days you have, anything you want to say, and a per-day answer.
  • Per day you can say you are resting, how many hours you have, exactly how far you want to go, or the most you want to go. NavRun holds you to it. It is not a note the plan can ignore.
  • What you set there is for that week only. Your rest days, your day rules and your weekly goal are exactly where you left them afterwards.
  • If what you asked for cannot happen, say a rest day on a week you told NavRun you want to run every day, it says which two settings collided instead of building something around it.
  • All of this works with AI coaching off too. An hour on Tuesday used to reach the plan on the website but not on your phone. Now it reaches both.

v2026.8.19.1

If you had AI coaching, you still have it.

  • The AI switch that shipped earlier today read "never asked" and "turned it off" as the same thing. Nobody had turned it off. Almost nobody had ever been offered the switch, because it only existed inside the iPhone app.
  • So plans, weekly reports, race strategy and run read-backs went quiet for people who had been using them all along. They are back, and nothing you had was lost.
  • If you did turn AI off, it stays off. That is the one thing this does not touch.

August 18, 2026

v2026.8.18.5

If AI coaching is off for your account, it is now off everywhere.

  • The analytics page was writing a coaching read of your training every time you opened it, whatever your AI setting said. With AI off it no longer does, and the rest of the page is unchanged.
  • Same for the first weekly report, which used to be written the moment you opened the reports page, and for asking for a plan to be revised in your own words. Both now stay put with AI off, and your plan is left exactly as it was.
  • Asking for a plan with AI off no longer replaces the week you already have. It sends you to the plan you have, the same as it always did with AI on.
  • Race strategy with AI off says so plainly instead of finishing with nothing in it.

v2026.8.18.4

With AI off, you still get a plan every week.

  • Saying no to AI coaching used to mean no plan at all. Now NavRun builds your week from your own runs instead: it reads your last twelve weeks, holds your weekly cap, your rest days and your day rules, and puts your long run where you asked for it.
  • It counts back from your race, so it knows a build week from a peak week from a taper.
  • It never asks you to jump more than a tenth further than your longest run in the last thirty days. That single rule is the best-evidenced injury finding in running, and it is a hard limit, not a suggestion.
  • Every run comes with a time on feet, not only a distance.
  • When what you have asked for does not fit safely, it tells you which of your settings is the problem and what it did instead, rather than quietly building something you should not run.

v2026.8.18.3

The plan page now shows everything that goes into your week.

  • "What the AI will see" listed about twelve things while seventeen were being sent. It now names all of them, including your day rules, your standing cross-training and how much of it you have been doing, your weekly floor, the fewest days you want to run, how big a weekly jump you allow, when your taper starts, and what your day job asks of your legs.
  • That list is generated from the payload itself, so it can no longer say less than what leaves.
  • The line above it promised your race course profile to anyone with a race on the calendar. It now says so only when NavRun really does have the stretches of the course you have not trained on yet.

v2026.8.18.2

You can see what gets sent before you ask for a run to be read back.

  • The rating box now lists it: this run's numbers, every split, the weather, what you write in the box, your experience level and weekly goal, and the planned run it matched.
  • It also says what stays here: your other runs, injury alerts, analytics.
  • The list is built from the same payload that goes out, so it cannot fall behind what actually leaves.

v2026.8.18.1

The Claude connection now turns away anyone who does not have your URL.

  • Your Claude connection is a private web address, and the token in the middle of it is what proves the request is yours. NavRun was also answering requests sent to that address with the token cut out, when it should have turned them away.
  • No training data was reachable that way. With no token there is no runner to look up, so every one of those requests came back as an error instead of anyone's runs. It still should not have got that far, and now it does not.
  • Requests without a token get a plain "not found" and go no further.
  • Your own connection URL has not changed. There is nothing for you to redo.