Cookrange
TürkçeJoin the waitlist

Changelog

What shipped, and when

Public changelog tracking starts on this page. For the broader product direction, see the roadmap page.

v0.9.7Improvement

Your chat list now shows more than the first 10 people

These are coming in the next build. v0.9.7 is not out yet.

Your chat list now shows a name, photo and online status for up to 30 conversations, not just 10. If you had more than ten active chats, the rest used to sit blank until you opened them.

Our KVKK Notice and Marketing Consent pages are now available in English, alongside the existing Turkish originals. Previously, opening either from the English site took you to the Turkish-only page.

v0.9.7Fix

The Explore tabs are comfortable to tap on smaller phones

These are coming in the next build. v0.9.7 is not out yet.

The tab strip on the Explore screen was thinner than it should have been on smaller phones; it is fixed. It shrank along with the screen, so on the smallest phones it was fiddly to hit.

Some sheets slid further up than they needed to when the keyboard opened; fixed. Seven of them were moving by twice the keyboard’s height.

Reporting a post now uses the same screen as everywhere else in the app. The reason list and the button wording match the other report screens; “False information” is now “Misinformation”. The Turkish reasons are unchanged.

When the group discovery list fails to load, you now get a retry instead of a blank page. It used to come up quietly empty, with nothing to do but leave and come back.

The small print is easier to read. The health note under AI answers, the hints under form fields and a few explanatory lines were printed in the faintest grey the app has; they are now a shade darker.

Your own name on the leaderboards is now clearly readable in the light theme. It used to be almost the same shade as the colour behind your own row.

Your own row in a squad list now reads “You” instead of your name, so you can find yourself at a glance. And for anyone using a screen reader, the leaderboards now say out loud which row is yours.

When you open the profile or the post of someone you have already blocked, the menu now says so instead of offering to block them again. Tapping it takes you to your list of blocked accounts, where you can undo it.

v0.9.7Fix

Reporting from a chat now tells you if it did not send

These are coming in the next build. v0.9.7 is not out yet.

Reporting a message or a person from inside a chat now tells you if the report did not send. The screen used to close straight away, so a report you thought you had sent was one you never sent again. The reason you pick is recorded properly too: reports made from a chat used to reach us differently depending on your phone’s language, for the same complaint.

“Misinformation” is now one of the reasons you can pick when reporting from a chat. The rest of the app offered five reasons and the chat screen showed four.

Buttons that were hard to hit on smaller phones are bigger. A number of them shrank along with the screen; they now stay large enough to tap comfortably.

A post by someone who has not set a profile photo now shows a placeholder instead of a broken image.

When you type in the report screen, it no longer jumps further up than the keyboard.

With a screen reader, the list of report reasons now says which one you have chosen. Before, all five were read out as plain text and nothing announced that a choice had been made.

v0.9.7Fix

The white block over a recipe photo in dark mode is gone

These are coming in the next build. v0.9.7 is not out yet.

In dark mode, opening a recipe no longer flashes a white block across the top of the screen while the photo loads. You get a surface that matches the background instead.

With a screen reader, the two/three/four-week picker and the language switch now say they are buttons — and which one you have already chosen. Before, they were read out as plain text, so there was no way to tell they could be tapped or which option was selected.

Turning your profile private, or switching auto-accept for friend requests, now tells you if it did not save. The switch used to stay where you put it even when the change had not gone through.

On a free programme, the price at the bottom of the screen is now a green that is easier to read in light mode. The old green washed out against the white background.

Block and Report on someone’s profile now do something. Both used to show a confirmation and file nothing at all. Blocking asks first and then takes effect straight away, and a report now reaches us.

Reporting a coach review or a streak squad now tells you if it did not send. The sheet used to thank you and close whether or not anything had been filed, and a report you think you have sent is one you never send again.

The meal plan heading on your home screen was missing; it is back. When a plan was not AI-generated the title was not drawn at all, and the label beside it spilled over the icons. The three plan buttons - compare, export to calendar, regenerate - now sit under a single menu.

Blocking someone from a post now asks first as well, and tells you if the block did not go through. The “blocked” message used to appear whether or not it had.

v0.9.7Fix

Dates in the gym lists now read in your language

These are coming in the next build. v0.9.7 is not out yet.

The gym member list says when someone joined in your own language. In Turkish it was showing English abbreviations like 12 mo and 2 yr.

The at-risk members card too. How long ago the last check-in was, and the note for a member who has never checked in, both read in your language now.

Coach screens say “Client” in your language when a name is missing. A request you have not accepted yet says “User” instead, because that person is not your client yet.

The gym member list’s “Premium” and “Standard” labels and its See all / Show less button read in your language too. The count now reads “See all (12)” rather than running the number onto the end of the words.

If you use a screen reader: a button that is loading now says so in your language. That covers every button in the app.

Text in the warning and info boxes is legible now. It was painted in the box’s own colour, which left it washed out in the light theme; the message takes the normal text colour and the colour stays on the icon and the border.

If your pinned or archived chats fail to load, the chat list now says so. It used to quietly act as though you had none, which brought archived conversations back into the list.

When something fails, you now get an explanation in your own language rather than a technical error code. That covers sending a photo or a voice message, requesting a verification code, changing your password and deleting your account.

Tapping Forward on a message no longer hangs silently. If your chats cannot be loaded, or take too long, it now says so - and if only some of them loaded, it tells you the list is incomplete.

Buttons are the right size to tap on smaller phones. On an iPhone SE, an iPhone 8 and some Android phones, buttons across the app were rendering a few points smaller than they should have been - just under the size Apple asks for. They are now the same minimum size on every phone.

If you use a screen reader, the “Add” chip in onboarding no longer says “not selected”. It creates a new entry rather than picking an existing one, so there was nothing to be selected. The search results beside it still announce their state, because there it tells you something.

Your earnings list says whether a commission is pending, approved, paid or rejected in your own language. Those four words were showing in English on both the coach and the gym earnings screens.

The meal-schedule step in setup has headings now. The rotation-week picker and the meal-times list both sat there unlabelled; they say what they are. And if you use a screen reader, the motivation badge on the AI twin screen now says “Motivation” instead of just reading out a percentage.

The name you gave your phone no longer leaves the app. On iPhone, the value recorded as the device “model” was in fact the name you typed in Settings - for most people, their own name. It now records the real hardware model (something like iPhone15,2), which is also what you will see in your list of signed-in devices. Names recorded before this change are left as they are.

v0.9.7Fix

The upgrade option comes back when your membership ends

These are coming in the next build. v0.9.7 is not out yet.

When your premium membership ends, the Discover screen offers the upgrade again. If it expired yesterday the app still counted you as a member and hid the upgrade card.

If something goes wrong attaching an image to a post, you now get a message you can read. It used to show English error text with technical details mixed into it.

The post tags dialog is now titled in your language.

If you use a screen reader, the gym feed now tells you which posts are pinned and which are announcements. Both were marked with a small icon that was announced as nothing at all.

If you use large text, the gym war length options no longer run off the edge of the screen. The 7, 14 and 30 day choices now wrap onto a second line instead.

If you use a screen reader, the attach-a-photo button in a chat now responds when you tap it. Its name was read out, but double-tapping it did nothing.

If you use a screen reader, the like and comment counts on a gym post now say what they count. They were read out as a bare number, so you heard “3” with no way to know what three meant.

Gym posts now say how long ago they were posted in your language. In Turkish the age was still written in English.

When a gym feed fails to load, you now get a message in your own language. It used to show the raw technical error, in English.

When a gym feed fails to load, there is now a Try again button. Leaving the screen and coming back was the only way to try again.

The like and comment buttons on a gym post are easier to hit. They were smaller than the minimum size a touch target should be.

If you use a screen reader, chat now tells you whether a message was sent, delivered or read. That was shown only as a small tick, which was announced as nothing.

It also names the muted, pinned and starred markers, and the recorder now says it is recording.

Times across the app now read the same way everywhere. A chat or a post from months ago stops counting days and says “1y ago”, and the times on your notifications are written correctly — they used to say things like “3 hour ago”.

The date on an older chat message now appears in your own format.

v0.9.7Fix

Small buttons are easier to hit

These are coming in the next build. v0.9.7 is not out yet.

Small buttons across the app now have a bigger tap area. They look the same; there is just more room for your finger to land. Twenty-seven were fixed, including the only way to swap a meal anywhere in the app, the button that signs you out, and the × that closes every sheet in the app.

Screens that cannot load their data now say so. Some used to show “there is nothing here” when the real problem was a connection or a permission, and others waited for ever. The one that mattered most: the credit restriction page told you your account was in good standing when the read had failed, and hid the appeal button with it — so anyone who wanted to appeal had no way to. It now tells you what went wrong and offers to try again.

The places where the app was still in English are now in Turkish too. A button said “Retry”, a heading said “Settings”, a label said “Active”; twenty-three of these were fixed. The technical error text you got when a screen could not load is gone too, replaced by a sentence that says what happened.

The version number in Settings now shows the version you actually have. It said “1.0.0 Beta” whatever build you were holding.

Commenting twice on the same post now sends the author two notifications. A second comment within a couple of minutes, and likes and reactions in the same window, produced no notification at all. Accepting a friend request could also fail with “no such request” after it had already succeeded.

The community and chat screens do less work in the background. When someone posted in a group, every other member looking at that group re-fetched its data; searching re-fetched on every letter you typed.

Coach specialization names are in Turkish now. The coach application and profile setup offered “Weight Loss”, “Rehabilitation”, “Senior Fitness” in English; they now read in your language. A bigger problem at the same place is fixed too: profile setup showed only ten of the fifteen options, and saving it silently deleted the other five (boxing, CrossFit, pilates, running, cycling) from your profile.

Unfollowing someone and following them again shortly after now works. The button flipped back to “Follow” and nothing happened.

The name of the coach you share progress with shows up. In some cases you saw a long account id instead.

When a group’s moderation history fails to load, its Retry button now actually retries. It used to look enabled and do nothing when you pressed it.

v0.9.7Fix

If you turned transparency off, the app now listens

These are coming in the next build. v0.9.7 is not out yet.

If you have “reduce transparency” or high contrast switched on, the app now respects it. The frosted-glass cards and panels become plain surfaces. If you turned that setting on because glass is hard to read, it was being ignored exactly where you needed it most — including the screen you see if your account is suspended, which you cannot navigate away from.

Glass cards have a visible edge in light mode. Their outline was almost invisible, so you could not see where one card ended and the next began.

The food scan screen no longer shows an AI credit counter. It was counting something that scanning does not use.

Liking posts in your gym’s feed is fixed. Liking or unliking a post could fail when the like count on screen was out of date. It now works.

“Try again” on your programmes list actually tries again. Tapping it previously did nothing.

The “(edited)” tag on posts now follows your language. It was always in English, even for Turkish readers.

v0.9.7Fix

The app is becoming usable with a screen reader

These are coming in the next build. v0.9.7 is not out yet.

A screen reader no longer reads nonsense down a list. The chat list said “loading” on every row, and the gym leaderboard wedged initials between the names — “A, Ayşe, 1200, B, Burak”. Profile photos, logos and thumbnails are silent now; the name is already written beside them.

Pictures that carry meaning now have names. A post’s photo, the meal you scanned and the logo on the splash screen tell a screen reader what they are.

The switches in Settings say what they are. Dark mode, account privacy, auto-accepting friend requests and the notification groups are read as one piece together with the caption beside them, instead of as a switch with no name.

Icon-only buttons are no longer nameless. Across the app, buttons that show only an icon — saving a favourite, adding a reaction, the flashlight, stepping through a recipe, changing your profile photo — now tell a screen reader what they do instead of saying “button”.

A few places that were still English are not any more. The step counter in cooking mode read “Step 3 of 8”; it is now in your language. And buttons that take something out of a list said “delete” in Turkish when nothing is deleted — they now say “remove”.

The countdown on the email-verification screen is no longer cut off. The Turkish text is longer than the English, so the timer overflowed and clipped — especially if you had raised your text size.

If your account is suspended, that screen now reads properly in both themes. The case number you need to quote in a support email was almost invisible in light mode.

The error screen you see when something goes wrong now reads properly in both themes too. The error code you need to quote in a support email was almost invisible in light mode, and the “couldn’t open your email app” notice on it was still in English. Both fixed.

When part of your data download cannot be read, the file now says so. That section used to appear empty, so “you have none of this” and “we could not read it” looked identical. The file now names the section that is missing and what to do about it.

The “System Status” card is gone from the error screen. It reported every service as working no matter what — so it gave the wrong answer to precisely the person who opened it because something had broken.

When a list will not load, you are no longer stuck there. The leaderboard and the add-a-friend list used to show nothing but a grey line. They now say what happened and give you a Retry button — the one on the friend list was already there but did nothing when you tapped it, and now it works.

The side menu remembers where you left it. Scroll it down, close it, and reopening it used to take you back to the top.

v0.9.7Fix

The notices we write you now actually reach you

This went live on the server today and applies to the app you already have.

Notices we send you personally now show their real title and message. Until now every one of them read “You have a new update.” - the message we had written appeared neither in your notifications list nor in the notification that reached your phone. Now you read what we wrote.

v0.9.7New feature

Blocking now applies everywhere, and we ask before your data leaves

These are coming in the next build. v0.9.7 is not out yet. The blocking half below went live on the server today and already applies to the app you have.

Someone you have blocked can no longer do anything. Until now blocking only hid that person’s posts from your feed - they could still comment, like, react and follow you. Not any more. Blocking also drops the follow in both directions and clears any pending friend requests. The “can no longer message you” part we announced at the end of August is genuinely in force as of today, too.

We ask before your health data or a meal photo leaves your device. Meal plans, recipes, insights, the assistant and photo nutrition analysis now show a one-time confirmation first. It says exactly what is sent, who receives it, what for, and that it goes outside Türkiye. Decline and that feature does not run; everything else keeps working. You can withdraw at any time from Settings → Privacy & Consents, and if you want the feature back later the screen simply asks again.

If the AI returns something incoherent, we no longer show it. A blank insight, text in the wrong language, a nutrition estimate whose numbers contradict each other, or a response where the model declined to answer - none of these reach you now. You get an honest “try again” instead. We would rather show you nothing than a wrong number, because these figures feed your daily calories and your weekly averages.

Deleting a post now removes everything under it. Comments, likes and reactions are cleared server-side in one pass. Comments on gym posts were never being deleted at all before.

We corrected the privacy texts. The sub-processors page did not say that meal photos go to our AI provider; it does now. The international-transfer sections of the privacy policy and the KVKK clarification text name the provider too. And the explicit-consent text said a consent record stores your IP address, which was wrong - a consent record holds only which purpose you agreed to, when, and against which version of the policy.

Historical IP addresses: why they are kept, and when they go. The app has not collected IP addresses since 27 August 2026. The values recorded before then are not being deleted immediately - they are held for a limited period for account-takeover, fake-account and misuse investigation, and then removed automatically - one year. The retention section of the privacy policy and the explicit-consent text now state that purpose, its legal basis and that period outright. Also written down for the first time: this website processes a visitor’s IP transiently to rate-limit the waitlist, contact and invite forms, and that value is never stored anywhere.

IP addresses are recorded again, and why is written down. Each time you sign in, your IP address is recorded - for account-takeover, fake-account and misuse investigation. It is deleted automatically after a year. The value is never asked of a third party: it is read from the request your app makes to our own server. The purpose, the legal basis and the period are in the retention section of the privacy policy.

The main navigation now works with a screen reader. The menu, notifications, messages, the bottom tabs and the assistant button in the middle all have names now, and the like and save buttons on a post say whether they are on or off. The consent tick box on the sign-up screen now announces that it is a checkbox and whether it is ticked.

If you own a gym, a failed load no longer shows you the wrong screen. Your gym dashboard, your member list and gym discovery now show an error and a retry button when data does not arrive, instead of “you don’t have a gym yet” or “no members”. Before, an owner could be shown a screen inviting them to set up a second gym.

When something fails to load, we now say so. Group discovery, quick add, your following feed and the notification preferences sheet used to look like “there is nothing here” when a load failed. They now tell you it failed and offer a retry. This mattered most in notification preferences, where a failed load made every notification group look switched on.

A failed sign-in no longer hints at whether an address has an account. A wrong password and an address with no account now produce the same message, and asking for a password-reset link answers the same way either way.

Correction — 2 September 2026. The features page said three things that are not true: that your weekly plan is written for you on Sunday, that you would know the moment a friend checks into the gym, and that a group of six shares one streak. You generate the plan when you want it, the gym check-in notification has not yet run on a real phone, and in a squad everyone keeps their own streak. The last two were corrected once before, on 4 August, and had gone on standing on these pages; the feature pages now describe what the app actually does today.

Your phone keeps up with you while you cook. Cooking mode walks through a recipe one step at a time, keeps the screen awake while you are cooking, and counts down a step that names its own time. Finish, and the meal goes into your log with its calories and macros. This already existed and had simply never been described on the site.

Deleting your account now removes your name from the posts you liked, too. Like records also stored your name and profile picture; they were shown nowhere and deleted nowhere. They are no longer written, and existing ones are removed on deletion.

You can now actually correct or remove a meal you logged. The edit and delete buttons had been on screen for a while but every tap failed silently; the server side went live today. Deleting now asks first, and tells you how many calories will come off your totals.

You can now delete a weigh-in you logged on the wrong day. We name the reading before removing it, and you can undo it straight afterwards. Your weight chart also covers 30 days, 90 days or your whole history.

v0.9.7New feature

Group owners can manage their group

These are coming in the next build. v0.9.7 is not out yet.

You can now edit a group you created. Change its name, description, city and rules, and choose who can join: anyone, by approval, or with an invite code. The “announcements only” mode, where just you and the group’s admins can post, is there too.

Invite codes. Create a code for your group and share it — anyone who has it can join. Regenerate it or turn it off whenever you like, and a new code cancels the old one immediately. If someone gave you a code, the key icon on the groups screen is where you enter it.

You can appoint group admins. Make a member an admin or a moderator from the member list, and they can handle day-to-day moderation — muting, banning, approving join requests — instead of you.

You can take back a join request. If you are waiting for approval, the group page now says so and one tap cancels it. The button used to read “request to join” whether you had asked or not.

A suspended account can actually appeal now. The appeal window on the suspension screen used to explain the process and nothing more; you can now write an appeal and send it, and the screen tells you when one is already being reviewed. If the appeal is accepted, your account is restored.

You can leave a gym. Joining one always worked and leaving it was not possible from the app at all; there is now a “Leave this gym” option on the gym screen, and you can rejoin later with the gym’s code.

You can fix exercise you logged on an earlier day. The exercise log only ever showed today, so an entry from yesterday could not be seen or corrected once midnight passed. You can now step back through the last 30 days and fix a duration or remove an entry.

Coaches can now build a programme. You can create one, add its weeks, days and sessions, and send it for review when it is ready. Once approved, it appears in the marketplace.

v0.9.7Fix

Exercise entries and account recovery

These are coming in the next build. v0.9.7 is not out yet.

You can now see, edit and delete the workouts you have logged. Tap the “burned today” figure on the home screen and today’s exercise is listed entry by entry. Change a duration and the calories are recalculated with it.

If a verification email never arrives, you can now change your address. Mistyped your email when you registered? Correct it on the verification screen and the link goes to the right inbox. The same screen also gained a support link.

The green tick on your meal plan now means you actually followed it. It used to appear as soon as you logged anything into that slot. Now it appears only for the planned dish; if something else went in, the card says so and you can still log the planned meal.

Water tracking lets you record more than your goal. The plus button no longer switches off once you reach your target.

Back and close buttons now have names for screen-reader users. They used to be announced without one, which could leave you stuck on a screen. On Android, long-pressing those buttons now shows their name too.

Numbers and dates now follow the language you picked in the app. Turkish shows 72,5 kg and 31 Ağustos 2026. Until now the format followed your phone’s language instead, so a Turkish app on an English phone still printed 72.5 kg and Aug 31, 2026.

v0.9.7Fix

Five things that never worked

These are coming in the next build. v0.9.7 is not out yet.

None of the five below had ever worked, in any version of the app. They all had the same cause, and they are all fixed.

You could not upload a profile photo.

You could not leave a review for your coach.

You could not enrol in a programme.

You could not be approved into a group - even when the owner accepted your request.

Removing a friend was one-sided - they left your list, you stayed on theirs.

v0.9.7Fix

Recipes, meal logs and consent

These are coming in the next build. v0.9.7 is not out yet.

Recipe generation is now in Explore. The “Recipes” card at the top of Menu → Explore turns the ingredients you have into a recipe. If you have declared an allergy, the generated recipe goes through that check too.

You can see, edit and delete the meals you have logged. Until now you only saw the day’s total, and a mistyped entry was permanent. Tap the day header and the entries are listed one by one.

You can see the accounts you have blocked, and unblock them. Blocking used to be a one-way tap. Someone you have blocked also can no longer message you.

Sign in with Apple users can delete their account. Deletion asks you to confirm your identity, and that only worked for email accounts.

You can find a friend by their email address. Friend search worked by name but not by address.

The switches in the Consent Centre now actually turn something off, and health data has its own consent. Each card also shows which version of the policy you agreed to.

We now tell you what happens to your chats when you delete your account. A conversation belongs to two people; the deletion screen now says so plainly.

Tapping a notification takes you to the right place, and admin announcements no longer appear blank inside the app.

The “typing…” indicator in chat now works, and the splash screen moves on as soon as the app is ready - it used to wait at least five seconds.

When the AI is unavailable you get a real plan instead of a blank screen, and the card says it was built from the catalogue. Recipe nutrition is now labelled as an estimate.

v0.9.6Announcement

Clearing up beta access

Some pages on this site said Cookrange was being tested via TestFlight and Play beta. That was inaccurate, and it has been corrected.

Where things actually stand: Cookrange is in a pre-launch internal alpha and currently runs on the development team’s own devices. External beta access has not opened yet.

Beta access will open when the time is right, and the first invitations go to the waitlist. Joining the waitlist is all it takes to be in line, and we will let you know when access opens.

We did not delete the inaccurate sentence from the v0.9.6 entry; a dated correction was added beneath it instead. If we get something wrong, the fix should be visible too.

v0.9.7Fix

In the next build: the allergen check now covers the meal-swap screen too

These are coming in the next build. v0.9.7 has not been released yet: the items below are written, tested, and their server side is live. They will be in the first build beta access opens with.

The allergen check now runs on the meal-swap screen. When a weekly plan was generated, your declared allergens were filtered out from the start. When you swapped a single meal by hand, that filter was not applied: the alternatives list came from the whole catalogue, and whatever you picked was written into the plan with no checks at all. So someone who had declared a peanut allergy was one tap away from a peanut dish. The list is now filtered, the chosen dish is checked again before it is written into the plan, and when nothing safe is left the screen says “no safe alternatives for you” rather than “no alternatives”. Those are two different facts, and saying the first when the second is true reads as the app being broken.

When allergen data cannot be read, nothing is treated as safe any more. If the profile read failed on a network error, the system used to assume “no known allergens” — the riskiest possible answer to an error. It is now the reverse: unknown is not safe, and no plan is produced. The app also can no longer write an empty allergy list over a real one it never loaded.

A budget question was added. A new step in signup asks what an ordinary week of food costs you, in four bands. We do not ask for and do not show a lira figure. The answer never appears on your profile, is not shared with anyone, and can be changed later. It is collected now; feeding it into plan generation is the next step.

Banned accounts are shown the reason, and the reason is now stored somewhere only the account holder can read it. Previously any signed-in user could read why anyone had been banned, and when.

Plans for people who picked the “no limit” budget band were being thinned for no reason. If you chose the fourth band on the budget question (“cost is not a deciding factor for me”), the plan generator was told two luxury dishes a week were fine — but the layer that checks the plan was capped at one, and it silently deleted the second. So the user who had explicitly said cost was not a constraint ended up with a meal missing, and in the worst case that could tip the whole week into being rejected. Both layers now use the same number.

Correction — August 28, 2026. When first published, this entry said the allergen check runs “server-side”. It runs inside the app, immediately before the dish is written into the plan; there is no separate server-side validation layer. The sentence has been corrected.

This will be posted again as a release note on the day it actually ships.

v0.9.6New feature

Gym presence for mutual friends, streak squads, and barcode lookup via Open Food Facts

This release added three things:

  • Gym presence: get a real-time notification when a mutual friend checks into the gym.
  • Streak squads: groups of six can now share a single streak.
  • Turkish barcode database: barcode scans now run against a database specific to Turkey and return a result in about 2.4 seconds on average.

Correction — August 4, 2026. The two items above were inaccurate. Barcode scanning uses Open Food Facts data; there is no Turkey-specific database, and scan time hasn’t been measured yet. Squads don’t have a six-person member cap or a shared streak calculation — each member’s own streak is shown. Corrected after an internal audit.

Cookrange is currently at v0.9.6, internal alpha (TestFlight and Play beta). This page is the starting point for public changelog tracking — earlier internal builds were not retroactively logged.

Correction — August 28, 2026. The gym-presence bullet above overstated what shipped. The notification is written, and its only trigger is a dwell-confirmed geofence event; that chain has not yet fired on a real device, so no member has received one.

Correction — August 28, 2026. The phrase “TestFlight and Play beta” above is inaccurate. External beta access has not opened yet; the app currently runs on the development team’s own devices. When beta access opens, the first invitations go to the waitlist.