Skip to content
MyBodyAI
LEARN
Topic Guides Blog Glossary Tools
DEVICES
Compare all devices Supported devices
Products Pricing FAQ About MyBodyAI

Changelog

What's new in MyBodyAI. Click any version to see what changed.

v0.998 beta

Latest August 8, 2026
New
  • Falling asleep is now part of the sleep score. The Withings Sleep Analyzer and the Oura ring both time how long a night takes to start, and the app finally reads it: an hour spent lying awake used to be invisible to a score that only described the night once it had begun.
  • Polar's sleep gate is on the Sleep tab: the half-hour in which you fall asleep most easily, and whether last night started inside it or by how much it missed.
  • Heart notices have their own card on the Health tab. What your watch flagged as an irregular rhythm or a raised resting rate is shown as exactly that: a notice from the device, never a diagnosis.
  • The day's heart rate is drawn from the beats your device actually recorded, for Polar and Oura wearers, with the maker's own forecast under the energy map.
  • Body temperature and the resting burn your device measures are read instead of estimated. The Energy card used to model the resting half from your height, weight, age and sex while the device was publishing the real number.
  • A new account starts with a short first run: what the app computes, a labelled sample of a real overview, the three ways to feed it and an honest timeline, instead of a grid of logos.
  • An email arrives when the link to your device expires, because giving the permission again is something only the wearer can do.
  • Naps count. Daytime sleep filed by Garmin now lands beside the night and lowers the day's sleep debt the same way it already did for ring wearers.
  • Daytime sleep has its own card on the Sleep tab. Your watch counts a nap as a separate record and keeps it out of the night, and until now the app dropped it: five accounts held 201 hours of measured daytime sleep over 180 days that never appeared anywhere. The card stays hidden until a nap exists.
  • You can read the night by dragging across it. Sliding a finger or the mouse over the sleep architecture names the stretch under the pointer with its own clock time, its stage and how long it lasted. The overnight vitals row answers to touch as well, where it used to work only with a mouse.
  • The comparator can rank devices by battery life, and there is a page for it: all 110 catalogue devices, 91 of them ranked longest first with GPS hours beside each, and the remaining 19 left in the unit their maker publishes.
  • Sign in with Google: create an account or sign in with one tap, on the web and in the Android app. If you already have an account under that address, the sign-in links to it instead of creating a second one.
  • Your phone is now a full data source: the overnight blood-oxygen low point, the day's lowest and highest heart rate, active minutes worked out from the phone's own heart rate, sleep stages and hourly steps all arrive through Health Connect, each labelled with the app that recorded it.
  • A phone panel you can open in any browser, not only on the phone: what your phone sends, from which app, when the last data arrived, and a switch that turns phone data off entirely.
  • Every paired device now has its own record: pairing a watch no longer signs your phone out, and a lost watch can be cut off from Settings.
  • Notifications reach the Android app itself: reminders and alerts that used to be email-only are now delivered to the phone.
  • Activity detail: tap any session to open it in full, measured against your own average for that sport over the last 90 days and against the morning after it. An activity can be deleted from the app for the first time, and the list finally says which day each session belongs to.
  • You can rate the app with stars. Anything you write alongside stays private: it goes to the owner's mailbox and is never published without your explicit consent.
  • If you delete your account, we ask why in a single anonymous question. The answer is optional and is not tied to your identity.
  • The Android app runs in closed testing on Google Play and testers now add themselves; there is also a public page for deleting your MyBodyAI account, with nothing to install.
Improved
  • A day still in progress says so. The energy card marks a running total as counted so far, with the time it was last updated, instead of presenting half a day as a measurement.
  • Stress arrives on whichever channel your device fills: Garmin publishes a 0 to 100 index, Oura the minutes of a day spent in elevated stress, and both now count.
  • Thirty days means thirty days. Every card that offers a window now cuts it by the calendar rather than by the number of readings it happens to hold.
  • Every number says which day it belongs to, and the sleep cards agree about the same night.
  • One date notation and one clock: dates lead with the day everywhere, times are on the 24-hour clock, and a 0 to 100 index reads as /100 rather than as a percentage.
  • A tab your devices can never fill stays out of the bar, and a card with nothing of its own to show stays hidden.
  • Nothing is cut on a narrow phone: the line explaining a factor wraps instead of being trimmed, the risk headline keeps its words, and the period switch shows every option it has.
  • Sign-in was tightened: a login code goes only to an address that already has an account, and the limit protecting the form no longer trips during one person's ordinary sign-in.
  • The Devices screen calls a connection quiet when its data stops, not when the vendor's status page says so.
  • aiclysm.com: the comparison hub answers questions about buying instead of questions about itself, the 22 pair pages lead into the catalogue, and the HRV article gained a five-device head-to-head measured across the same nights, plus a section on Oura.
  • Strava has been retired. The integration was paused in June while Strava rebuilt its API, and it is now gone from the app entirely: the connection was revoked, the tokens deleted and the activity records that had come from Strava removed, as Strava's own terms require. Activities from your watch are unaffected.
  • Data from your watch arrives on a steadier schedule. The hourly sync used to fetch every account at once, which left one slow provider holding up everyone behind it; each account now has its own slot in the hour.
  • Fitness is measured by effort instead of time on your feet. The training impulse behind the Performance curve, the load ratio the coach uses and the monotony figure all weighted a session linearly by heart rate, so on one account walking made up 40 percent of the entire 42-day impulse. It is now Banister TRIMP computed from your heart rate reserve, against the resting rate of that same day and a personal maximum, so an hour near threshold counts for several hours of walking. Expect your fitness number to fall: the old one was the flattering one.
  • A night broken by a long awakening counts as one night. It used to arrive as two records and only the longer half was kept, so a night measured as 5h53 asleep inside a 9h57 window was published as 4h26. Scores cached from the shorter half have been recomputed.
  • A card appears only when it has something of its own to say. Key signals used to keep a block alive on a single input row, so a scale that takes a pulse at every weigh-in produced a Recovery block reporting no data yet, while the page below it already named the device that would supply it.
  • The onboarding card no longer promises data in 2 to 5 minutes. The first import usually takes up to 30 minutes, which is what the banner on the same screen always said, and both now quote the same window.
  • One coach instead of three: the Overview, the Activities tab and the day's banner used to advise differently on the same day. A single recommendation now reads your training load (recent days against your long-term average, how monotonous the week is, how hard yesterday was, the week against WHO activity guidance) and names a concrete session from your own last 90 days.
  • Body load on the Activities tab covers the whole body: every sport now maps to all body areas instead of the prime movers only, the level is a weekly rate over the days you actually trained, and an unnamed workout no longer paints the whole figure amber.
  • The Overview opens with a single instrument panel: the state of your body, why it is that way and the coach's one next step in one place. The verdict word settles on a fixed 30-day window, so it no longer changes with the period you happen to have on screen.
  • Key Signals put the weakest signal in the lead; the rest wait in a one-line strip and swap into the lead when you click one.
  • Oura delivers what it always could: vascular age, VO2max, stress and resilience now really arrive. The connector had been asking for them, but the permission was never granted.
  • Numbers say where they came from: each value carries the device or app that wrote it, a weigh-in is filed under the day you lived rather than the day in UTC, and the sleep chart draws the night your device actually measured.
  • The Android app scrolls with your finger again: charts no longer take over a vertical swipe, a tap behaves like a tap, and the top bar has a single owner.
  • The free trial is one per person rather than one per row in the database, and the app stops offering a subscription to people who already pay.
  • Security tightened: the second factor is now requested before a password or email change instead of after it, the admin area requires one too, and pre-deploy database snapshots are encrypted the moment they are made.
  • aiclysm.com: the comparison hub has its content back, with 110 devices, a battery-life filter, real prices and named sources; the tools hub and all 13 calculators were audited and corrected; Czech pages read in Czech before any JavaScript runs; and a new article covers what a general chatbot misses when you paste your health data into it.
Fixed
  • One hike written by two devices is one workout. A Garmin file stamps the device's own clock while an OAuth provider stamps your profile timezone, and that difference used to hide the duplicate.
  • A day that failed to load is no longer drawn as a day without data.
  • A single raised number no longer carries a warning on its own: the comparisons behind the body's alert have to come from different signals.
  • A night the device did not describe is not drawn as a measured course. The hypnogram needs real phases; without them the card shows honest totals instead.
  • Numbers stopped colliding on a 360 px phone, and the labels around the performance curve are back inside the chart.
  • A week with nothing in it is not a digest: the weekly email goes out for a week that has something to report.
  • A broken reading is refused rather than rounded into a believable one.
  • After an update the page reloads itself instead of showing an error card.
  • A value belongs to the day it was measured: a reading from last week no longer appears under today's date with a tick beside it.
  • The catalogue on aiclysm.com stopped crediting ten Withings models with an ECG they do not have.
  • The same ride is no longer stored several times. A Garmin file reports the elapsed session time while your phone copy of the same ride reports only the moving time, and the matcher compared those two numbers before it looked at the clock. One ride was stored four times, and 935 of the 1409 cycling minutes a month showed came from that single day.
  • Seven days means seven days. The training load window ran over eight days while the chart on the same screen ran over seven, so one tab could show 543 weekly minutes beside a 463 minute chart, and two rest days beside a strip showing three.
  • A pulse taken while you stand on a scale is no longer filed as your resting heart rate. 207 such readings were stored across six accounts, one of them swinging from 54 to 108 between consecutive weigh-ins.
  • A score no longer rests on a single measurement. Cardiovascular fitness could publish a full number from a resting heart rate alone, which had an account with nothing but a scale reading 41 out of 100. It now needs two independent signals before it says anything.
  • Intensity zones are counted over the whole period, not over the sessions the page happens to have loaded. An account with a year of training was missing its oldest sessions from a card captioned for the period.
  • The error card no longer flashes when you open a page right after an update. A stale bundle drops several files at once, and the recovery reload was being reported as a failure for the few hundred milliseconds before it landed.
  • The comparator no longer implies an integration for brands that do not have one. Every comparison page ended on a band offering to turn any of the nine listed brands into daily scores, and four of them have no integration at all.
  • Steps counted twice: Health Connect adds up every app, so a phone pedometer plus a mirror of your watch turned one walk into two. The largest single contributor now wins, never the sum.
  • Workouts merged into one another: fifteen sessions could end up stored as eight, which also skewed load, overtraining and recovery. Two workouts count as one only when they started at the same time.
  • Trends could describe a year from the last 50 workouts, a chart counted one sport twice, sleep averages divided by rows instead of days, and a request that failed looked exactly like having no data.
  • The Czech app showed English sport names and bare numbers without units.
  • Calculators on the site: body composition fed centimetres into a formula written for inches, VO2max percentiles sat in the wrong columns, resting heart rate showed two verdicts at once, and the risk dials drew a green arc at the worst level.
  • Payments: checkout could sell a second subscription alongside the first, and the expiry reminder guessed what was ending and guessed wrong.
  • Opening Settings could report an error: the page asked for your profile twice and ran into the request limit.
  • Deleting an activity now recalculates the days it touched, not only the last ninety.

v0.997 beta

July 19, 2026
New
  • A clinical sleep view: your night broken into light, deep and REM sleep in an animated donut, how long you took to fall asleep, and a multi-night trend so you can watch the shape of your sleep change over time.
  • Load and Recovery on the Overview now shows the recovery score your device works out on its own (Polar, Oura, WHOOP, Suunto) right next to MyBodyAI's own reading, so you can compare the two side by side.
  • Fitbit Active Zone Minutes now appear on the Activities tab.
  • Local weather and air quality: with your location, MyBodyAI now shows the current weather, ozone and UV index where you are, and shifts the suggested outdoor training time away from heat and poor air. Allow your location in one tap on the Overview, or set a city in Settings; your timezone is set from it automatically.
  • Two-factor authentication: protect your sign-in with a passkey (your fingerprint or face), an authenticator app, or one-time recovery codes. It is optional but recommended for health data. You also get an alert when a new device signs in, plus trusted-device management.
  • Oura Ring support: connect your Oura over secure OAuth for sleep, heart rate and HRV, blood oxygen, breathing rate, skin temperature and daily activity.
  • Your recorded movement now appears on the daily energy map: every walk, ride or workout is drawn as its own window over the curve, on today as soon as it syncs and on the day you browse back to, with the times listed under the map.
  • An Android app is now in closed testing on Google Play. Ask for access in Settings under Devices and notifications, join the tester group and install it; it runs MyBodyAI as an app and can add the daily numbers your phone already collects in Health Connect, such as steps, distance, active calories, sleep and workouts recorded by other apps.
  • A Subscription tab in Settings shows the real state of your plan straight from the payment provider: what you have, when it renews, and how to change or cancel it.
  • Weight and body fat now sit on the Overview alongside your other body signals, with their 90-day direction.
  • A blood-pressure reading in the highest measured range now raises a plain-language banner on the Overview suggesting you have it checked. It is a heads-up from your own measurement, never a diagnosis.
Improved
  • A thorough mobile pass across the whole app: notch and safe-area support, bigger tap targets, an offline banner, add-to-home-screen, smoother loading with content skeletons, and fixes to anything that ran off the edge on narrow phones.
  • The energy map opens fullscreen, including landscape on phones, and you can edit your day's windows by dragging them, with 15-minute nudges; your plan saves instantly.
  • Weather is easier to set up and more accurate: one-tap GPS with your place name, a manual city option, and the forecast now follows the Yesterday / Today / Tomorrow switch on the Overview.
  • Illness Risk is now called Body Alert, without pseudo-probability percentages, to describe what it really is: a heads-up from your own signals, not a medical prediction.
  • Withings vascular age and visceral fat are now surfaced across more of the app (Overview, Health, Activities and Progress), with honest measured-versus-estimate labelling and a what-if biological-age simulator.
  • aiclysm.com refreshed: a data and security section on the homepage, Oura added to the supported-device lineup, and a new brand-first hub to compare all devices.
  • The energy map reads more like a day: sleep, work and training are translucent columns behind the curve instead of a separate strip of brackets below it, and an estimated window is drawn faintly so a guess never looks like a time you set.
  • The Overview refreshes itself every half hour while you leave it open, so a tab you came back to is not showing this morning's numbers.
  • Key Signals cards are slimmer and now show the exact value on hover or touch; the day picker always stays on screen, and the whole app loads its own fonts, so text no longer flashes in a fallback typeface on the first visit.
  • Your body's verdict word holds steady: it no longer flips between states on ordinary day-to-day noise, and the wording explaining it dropped the raw 0-100 numbers for plain language.
  • Czech pages on aiclysm.com read in Czech throughout: real Czech comparison pages, a Czech cookie bar, and a working language switch on the terms and privacy pages.
Fixed
  • Trends now labels 'lower is better' signals the right way, and cards with no data for the chosen period hide themselves instead of showing blanks.
  • Biological-age domains now display and rank correctly as ages, where younger is better.
  • A weigh-in that is clearly not yours, from someone else stepping on a shared smart scale, is no longer counted as your weight.
  • Changes in Settings and a manual sync that looked like they had done nothing now report what actually happened.
  • Editing tomorrow's plan on the energy map now shows the new times straight away instead of redrawing the old ones.
  • Clicking quickly through the tabs no longer produces errors, and the connect-a-device screen stopped contradicting itself about what is already linked.

v0.996 beta

June 21, 2026
New
  • Polar now delivers full daily activity: steps, calories, active minutes and daily minimum and maximum heart rate join the sleep, heart rate and HRV Polar already provided, so Polar users see the same activity and load picture as Garmin and Fitbit users, and their load and recovery scores use it
Improved
  • VO2max from your watch now counts toward Biological Age: the fitness domain (the strongest single longevity signal) reads your Garmin, Fitbit or Polar VO2max instead of only a manually typed value
  • Key Signals on the Overview redesigned: a 7 / 14 / 30-day period switch, mini trend lines with today marked, and a clear five-level colour verdict for each signal
  • A short or sleepless night now steers the day toward rest: readiness is held back and sleep debt is counted instead of being hidden by an older recovery reading, and the day's guidance now reads the same across the banner, the hero and the cards
  • Watch comparison pages on aiclysm.com refreshed with an editorial layout and corrected device-capability data

v0.995 beta

June 9, 2026
New
  • Redesigned dashboard: seven focused tabs (Overview, Trends, Health, Performance, Activities, Sleep and Progress) with your Body Status figure as the home hero, a sidebar and a calendar on every tab
  • Daily coach on the Overview names your body's state in plain words and tells you whether today is for training, adapting or resting
  • Energy map: see how your energy rises and falls through the day, find the best window to train or focus, edit your day plan and test a what-if before you pick a bedtime or a workout
  • Performance tab: fitness, fatigue and form on one curve built from your training load, an intensity split and a 90-day adaptation view
  • Body load map on Activities shows which parts of your body took the most from recent training, with the intensity and the session behind it
  • Health tab in depth: a body-system view, biological age with its trend, and now vascular age, visceral fat and blood-pressure ranges from your Withings
  • Progress tab: a living avatar, daily rings, simple missions and a long-term journey that rewards consistency
  • Day rhythm editor: set your work, training and sleep windows, and the recommended bedtime is learned from your own wake times
  • Share your dashboard as an image with one tap, and revisit any past day from the calendar
Improved
  • The Overview is now a decision layer, not a copy of the detail tabs: one screen for what is happening today, why, and what to do next
  • Honest empty states across the app: when there is not enough data yet, the app says so instead of showing a made-up value
  • The legacy Mindset dashboard has been retired; its full set of charts lives on as a dedicated All graphs page

v0.991 beta

May 16, 2026
New
  • AI Hub — the AI tab is renamed and restructured into three layers (Today / What is happening / Bigger picture) with a Next-days Outlook section and an Open Insight CTA
  • 10-band decile metric system — all 13 health metrics now use a single 10-band copy table (severity + insight + AI tip in EN and CS) instead of the old 3–5 tier ladder, so every score position has a tailored interpretation
  • Body Status hero rework on the dashboard — gauge size roughly doubled and the competing person silhouette removed, so the headline number reads as the visual anchor
  • Weekly digest redesigned — week-over-week comparison hero with gauge bar, four delta tiles, 7-day bar chart, top three highlights and a recommendation. Delivered Monday 10:00 Europe/Prague (was Sunday 8 UTC)
  • Confidence chip on dashboard tiles — when the underlying confidence drops below 0.8 the chip appears (yellow under 0.8, red under 0.5), so a glance at a tile reads as value, trend, confidence
  • Provider tier badge per signal on /connect — a gold / silver / bronze dot next to each signal shows which provider is the trusted source (Fitbit VO2max gold vs Fitbit steps bronze, etc.), no more uniform colour per provider
  • Five topic-cluster hub pages on aiclysm.com — HRV, Sleep, Recovery, Longevity and Stress — each cross-linking around ten articles, glossary entries, tools and device comparisons
  • New blog post — HRV accuracy compared across Garmin, Polar, Fitbit and Withings, bilingual, with eight peer-reviewed citations
  • /.well-known/security.txt — coordinated disclosure contact per RFC 9116 for security researchers
  • Activities now show additional details — speed, power, elevation gain, moving time, minimum heart rate and step count alongside duration, distance and load — pulled from Garmin or Strava and merged on a per-field basis
  • Bilingual confirmation email after a successful Garmin GDPR import — summarises what landed (HRV, SpO2, VO2max, activities) and suggests a complementary provider when something is missing
Improved
  • Morning Energy recalibrated — HRV switched to an absolute mapping (was personal percentile), weights tuned to 0.2 HRV / 0.5 sleep / 0.3 RHR after grid search, plus 10-band insight copy and driver chips (Sleep Quality / ANS Balance / Sleep Debt)
  • Sleep debt is now shown with sign in hours across all UI — −X.Xh debt / +X.Xh reserve — instead of a 0–100 score that hid the direction
  • AI tips audit — seven logic and copy bugs fixed across micro-tips, training tips, AI insights, alerts, daily narrative, weekly digest and the adaptive engine
  • Flagship cards rewritten in semi-lay tonality — drops ‘sympathetic’ / ‘vagal’ / ‘autonomic’ / ‘baseline’ jargon in favour of stress response, balance, recovery system
  • Transactional emails visually overhauled (all 11 templates) plus a dark-mode override for new Outlook for Windows / Outlook.com / Gmail / Apple Mail — the deep-navy palette is no longer repainted to mid-gray
  • Light mode redesigned — warm cream-sand palette unified across marketing and dashboard, plus a hairline outline on the Body Status hero so colours stay legible on the lighter background
  • Typography refresh — Manrope across body and display headings (JetBrains Mono kept for code), marketing homepage emoji icons replaced with Lucide SVG (seven stroke icons matching the brand line)
  • Dashboard typography pass — hero gauge resized, signature ring slimmed and the Bio Age font capped at one consistent size across all tabs so the headline numbers stay the visual anchor on phone screens
  • Glossary entries, blog posts and topic hubs now cross-link automatically — about 190 inline references added in EN and CS so reading an HRV article surfaces the matching glossary entries and related posts in one click
Fixed
  • Morning Energy proxy never reached non-Garmin users in the live pipeline — an old guard counted Garmin-specific history days and dropped the proxy context for everyone else. Re-filled 549 historical rows for 11 affected users
  • Bio Age card now stays interactive when birth date is missing — clicking the empty-delta state routes you straight to Settings → Profile → date of birth
  • Garmin GDPR import auto-fills bio-age inputs (gender, birth date, height, weight, VO2max) from user_profile.json and BioMetricProfileData inside the export ZIP
  • Garmin GDPR activities are now imported and merged with existing Strava records — Garmin contributes training load, training effect and VO2max to the same activity row, the richer source wins per field
  • Profile save now invalidates AI and scoring caches — previously the dashboard returned 6h stale data right after you filled in birth date and gender
  • Tools pages (biological-age, hrv-decoder, sleep-calculator) no longer hit an infinite reload loop when localStorage.lang differs from the URL language
  • Mobile Chrome auto-translate no longer crashes the app — a notranslate meta hint prevents the browser from wrapping text nodes, which used to desync React on the Settings page
  • Czech URL prefix /cs/ now wins over the localStorage language setting — sharing a CS link with someone whose browser is set to English no longer flips the page to English
  • Strava and Garmin webhooks are now correctly proxied through Caddy to the wearables backend — previously these events 404ed and were silently dropped
Security & Infra
  • Mobile auth token sliding expiry — every successful X-Mobile-Token auth refreshes the token timestamp (throttled to once per 24h), so a daily-worn paired Garmin watch keeps a live token indefinitely while a 90-day idle device still expires
  • PostgreSQL timestamps now native — 16 columns migrated from TEXT to timestamptz, dropping the ::timestamptz casts on every indexed read across admin, auth cooldowns and premium expiry
  • Major dependency bumps — Stripe SDK 14.4.1 to 15.1.0, gunicorn 25.1.0 to 26.0.0, sentry-sdk 2.29.1 to 2.59.0, postcss 8.5.8 to 8.5.14, vite 7.3.1 to 7.3.3 (4 npm advisories closed)

v0.99 beta

May 4, 2026
New
  • Backdate self-report up to 7 days — day picker chips (Today / Yesterday / weekday) so you can fill in a missed check-in for any of the last week
  • Garmin Connect IQ watch app (Pre Release) — on-watch health dashboard for 67 supported devices (Fenix, Forerunner, Venu, Epix, Vivoactive, Enduro, Instinct), pair via 6-digit code in Settings
  • Garmin GDPR import now extracts HRV, SpO2, VO2max and AFib events from FIT files inside the export ZIP — massive jump in Garmin data coverage
  • Garmin Index Smart Scale support — weight, body fat %, muscle mass, bone mass, body water % imported from your GDPR ZIP and shown on the Body card
  • Both signature slots (left + right) are now user-configurable — pick from 14 metrics for each side, persisted across tabs and devices
  • One-click Disconnect button on /connect page for any OAuth provider (Fitbit, Polar, Withings, Strava) — revokes tokens server-side, stops dormant alerts
  • FAQ Connection issues category — 10 bilingual entries covering re-OAuth, dormant providers, missing data and pairing problems
  • Illness Risk model adds breath-rise trend (Mason 2022) — rising overnight respiration is a documented early-warning signal for infection
Improved
  • Bio Age card always renders, even when chronological-age delta is missing — you still see the radar with all 8 domains and contributing top three
  • Insight detail popover is now inline — opens above the metric instead of a full-screen modal, with proper scroll and responsive grid
  • Dormant provider banner now distinguishes ‘no device paired’ from ‘scope upgrade needed’ from ‘sync stalled’ — targeted action for each
  • Apple Health removed from the UI everywhere — the provider was retired upstream and listing it caused user confusion
  • Settings page exposes a Watch Pairing card — generate a 6-digit code with a 5-minute countdown, copy button, and clear instructions for Garmin Connect Mobile
Fixed
  • Health tab Training Load chart now populates — the score was being computed but never plumbed into the history payload, leaving the sparkline empty
  • Re-connecting an expired or revoked provider actually reactivates it — previously the new tokens were saved but the status stayed ‘expired’, leaving the device invisible
  • Watch pairing endpoint no longer rejects every request as forbidden — CSRF guard correctly skipped on the pre-session pair exchange
  • Backdating an existing self-report no longer leaves an orphan illness signature when you un-check ‘currently sick’ — routes through the proper edit pipeline
  • Lockout ‘try again in N seconds’ banner now uses the actual cooldown window from the database, not a hard-coded value
  • Bio Age calibration label dropped a spurious ×100 multiplier that made small adjustments look like 1500 % drift
  • Polar 404 noise silenced for users without a Polar device — previously every sync logged 2,400+ false errors per day
  • Self-report alcohol values 2 (moderate) and 3 (heavy) are persisted — previously the POST endpoint capped at 0/1 and silently dropped higher values
Security & Infra
  • Admin panel hardening sweep — XSS escaping on log search results, RBAC self-protection (admins can’t demote themselves to a 401), persistent admin audit log with viewer, async transactional email
  • OAuth tokens encrypted at rest — provider access & refresh tokens are now Fernet-wrapped in the database, dual-write phase complete with 21/21 connections backfilled
  • P0 audit sweep — CSRF protection extended to every state-changing non-admin endpoint with documented exemptions, OAuth log sanitisation, contract drift guards, webhook HMAC hardening

v0.98 beta

April 20, 2026
New
  • Daily Narrative — your day told as a coach's story with today's slogan, yesterday's recap, 7-day trend, and tomorrow's outlook
  • 10-tier color scale across week trend bars — instantly see critical, steady, strong, or peak days
  • Training Load metric + Strain context — tracks your weekly training stress with 7-day strain history
  • Unlock panel — shows exactly which metrics become available when you connect another device
  • Garmin data import via official GDPR export (ZIP upload) — while we wait for Garmin Connect API access
  • Signal status on every metric — active, limited, stale, or unavailable, always clear why
  • Community card in Settings — join our growing user community
  • Illness Risk — redesigned as an AI 'defense shield' tile with an animated ring, breathing halo, live monitoring pulse, contributing biomarker chips (Immune, Respiratory, Recovery) and an adaptive insight that speaks to your current state.
  • Biological Age — a paired 'youth gauge' visual next to Illness Risk with its own ring, breathing halo, top three contributing domains (e.g. cardiovascular, sleep, recovery) and age delta front and centre.
  • AI Discoveries redesigned — correlation and seasonal patterns now render as premium cards with strength bands, metric-pair icons, and a four-season best-vs-worst strip.
  • Tap any metric to see a detailed explanation — what it means, how we compute it, what influences it, and how to read the score. Fully translated to Czech and English.
Improved
  • Plain-language score labels and mobile-friendly collapsible panels throughout the dashboard
  • Natural, native Czech translations across all AI-generated daily insights
  • Body Status now requires at least 5 core metrics before reporting 'Steady' — no more false 'all good' when data is missing
  • Sleep efficiency now follows the AASM clinical standard (Total Sleep Time / Time In Bed) — consistent with sleep medicine research
  • Self-reported symptoms now provide informational insight alongside biometrics instead of overriding scores — more transparent
  • Faster login — last activity update moved off the critical path
  • Better experience for Fitbit-only and scale-only users — sparse data handled gracefully
  • Weekly Summary card now compares scores week-over-week with trend labels
  • Dashboard layout reworked — your flagship metrics surface at the top, weekly trends moved below so the most actionable insight stays on screen first
  • Hero consolidated — one unified Body Status gauge with a compact Training Readiness chip, replacing two competing indicators
  • Changelog page redesigned — each version is now a one-click accordion so it's easy to scan the full release history
  • Risk-type metrics (Illness Risk, Stress Load, Overtraining) now show raw values — a low number means a good state, with a short matching bar. No more mental math of 'is 94 good or bad?'.
Fixed
  • VO2max badge restored on metric card
  • Strain Chip labels now properly translated to Czech
  • Mind / Body / Sleep panels no longer disappear after being opened
  • Training Readiness card restored to hero section
  • Garmin morning Body Battery now correctly uses peak 24h value
  • Quick Tips icons (wind, check) display correctly
  • Dark mode: below-threshold bars are now visible
  • Background scoring retries on transient database locks — no more silently missing updates
  • Dashboard refresh no longer redirects you to the landing page — the URL now stays on your dashboard as expected.
  • Withings workouts sync — fixed a date-parsing error that prevented workouts from syncing for every Withings user.

v0.97 beta

April 10, 2026
Improved
  • Biological Age calculation now uses smooth transitions across all health domains — more accurate and stable results
  • Peak Day detection requires stronger HRV signal — fewer false positives on noisy measurement days
  • Circadian rhythm scoring now handles shift workers and irregular wake times correctly
  • Touch targets enlarged across the dashboard for better mobile experience
  • Performance optimizations — faster scoring, reduced server resource usage
Fixed
  • Data sync no longer discards valid sleep records in rare edge cases
  • Health data distribution models now correctly include all valid measurements
  • Dashboard sync indicator no longer blocks header controls
  • Security hardening and infrastructure improvements

v0.96 beta

April 7, 2026
Improved
  • Sleep Quality score now reflects individual nights — a bad night drops your score immediately instead of being hidden by weekly averaging
  • Sleep Quality now uses 6 signals (provider score, sleep phases, duration, efficiency, overnight recharge, trend) instead of a single average
  • Circadian rhythm scoring recalibrated — deep sleep consistency no longer penalizes normal night-to-night variation
  • Training recommendations now precisely match your readiness zone — no more intense workout suggestions on moderate-readiness days
  • Trend explanations now correctly identify the driving signal for each health index change
Fixed
  • Deep sleep values under 5 minutes are now filtered out (sensor misclassification)
  • Illness risk adjustments from morning energy patterns are now visible in score diagnostics
  • Historical scores recalculated to match updated algorithms — no artificial jumps in trend charts

v0.95 beta

April 5, 2026
New
  • Extended signal coverage to 19 signals across 5 providers (was 14)
  • Polar: SpO2, skin temperature, VO2max, weight, and ANS Charge (recovery score) now synced
  • Fitbit: daily activity stats (steps, calories, floors) and VO2max (Cardio Fitness Score) now synced
  • Withings: skin temperature and respiratory rate from sleep data now synced
  • Signal Matrix — new categorized comparison table on the Devices page (5 categories, 27 signals)
  • Sleep efficiency, floors climbed, and distance now tracked in daily summaries
Improved
  • Sleep summaries now include HRV, respiratory rate, and SpO2 from all providers
  • Resting HR and HRV now applied across all historical days (not just today)
  • Provider comparison table in the app now shows 5 categorized groups
  • Complete device lists for all providers (specific models instead of generic descriptions)
Fixed
  • Website content audit — removed references to unsupported providers, corrected all signal and metric counts
  • Czech language improvements — formal address (vykání), diacritics, and typo corrections across 20+ files

v0.94 beta

April 4, 2026
New
  • Feature pages — dedicated pages for Health Pattern Detection, Biological Age, and Body Status
  • Database migration system — automatic schema upgrades without data loss
  • Admin panel redesign — improved UX, SMTP testing, email management
Improved
  • Weekly health digest — skips users without data, fixed bio age template rendering
  • Login flow — deduplicated ceremony code, added IP blocking on OTP verification

v0.93 beta

March 29, 2026
New
  • CI/CD pipeline — automated testing on every commit via GitHub Actions
  • Disaster recovery plan and Data Protection Impact Assessment documentation
Improved
  • Test coverage expanded from 353 to 875+ tests across the entire codebase
  • Exhaustive code review — 40,000+ lines reviewed, 35+ fixes with zero regressions
Fixed
  • Rate limiter now uses real client IP (was using proxy IP)
  • Admin panel — split into sub-modules for better maintainability

v0.92 beta

March 22, 2026
New
  • Accessibility (WCAG 2.1 AA) — keyboard navigation, focus traps, ARIA labels across the app
  • Progressive Web App (PWA) — installable on mobile with offline support
  • FAQ page — 26 questions across 5 categories with search
  • Body Status gauge — continuous 5-state visualization (Alert → Recovery → Steady → Strong → Peak)
Improved
  • Security hardening — scrypt-hashed OTP, TLS 1.3, non-root containers, 100% admin audit logging
  • SEO audit — structured data, canonical URLs, hreflang tags on all pages
Fixed
  • Professional quality audit — 14 backend + 9 frontend fixes, dependency pinning
  • Czech text standardization — formal address (vykání) across all components

v0.91 beta

March 18, 2026
New
  • Scoring engine v2 — complete overhaul of all 12 health indices with evidence-based formulas
  • MyBodyAI+ subscription: full access for one coffee a month, with a 7-day trial
  • Legal compliance — privacy policy, terms of service, GDPR data export and deletion
  • Rate limiting and monitoring — request throttling, error alerting via Telegram
Improved
  • Authentication rewrite — password-first flow with 6-step state machine, anti-enumeration
  • Codebase restructuring — health_scores, database, ai_engine, routes as packages
  • Gzip/zstd compression, code splitting, lazy-loaded routes

v0.90 beta

March 12, 2026
New
  • MyBodyAI platform launch — 12 health indices, biological age, body status, training readiness
  • Dashboard with 3 view modes — Command Center, Focus, and Zen
  • 4 provider integrations — Polar, Fitbit, Withings, and Strava via Open Wearables API
  • Gamification — 26 achievements, 10 ranks, BioClass evolution system
  • AI-powered insights — pattern detection, trend analysis, micro-tips, and daily targets
  • Bilingual interface — full English and Czech support with formal Czech address