Skip to content

Changelog

All notable changes to OktaPT will be documented in this file.

[2026-10-30]

Added

  • Last time's result under each exercise. In the workout logbook a patient reads what they logged the last time they did an exercise («Было: 4 × 5 · 5 кг» / "Last: 4 × 5 · 35 lbs"), whichever day or plan it was in, with the day once it is more than a month old; the empty weight boxes suggest last time's weight when the therapist set none for the day and nothing was typed above. The therapist sees the same line with its date under the dose while building or editing that patient's program, on the web and in the app, never in a template. Where the clinic uses the workout logbook; the app part arrives with the next app update.
  • Search in the therapist app's Messages. Therapists get a search field above their conversations that finds a chat by its title or the names of the other people in it, and stays at the top while the list scrolls, as the patient list's search does. Patients' inboxes have no search.
  • Today's patients can be turned off per clinic. The therapist app's Today's patients list (the pill beside Patients, Add patient to today, Seeing today) now follows the todaysPatients flag, on for every clinic until it is set to off. With it off the Patients screen is the directory alone, with the day's appointments above it when the clinic uses scheduling. Older versions of the app ignore the setting.

Changed

  • Picking the exercise for a recorded video, in the app. When a therapist records a video for a patient, the list of exercises to choose from is now names and a short caption, without thumbnails or play buttons (the video that matters is the one about to be filmed). An exercise named exactly what was typed is always the first row, and the green Create exercise bar at the top still turns what was typed into a new exercise and goes straight to recording when no exercise has that exact name. With Mine or Personalized selected, an exercise that is only under All is no longer a dead end: a row says where it is and one tap shows it.

Fixed

  • Video visits: sound you can see and fix. A patient whose microphone does not reach the therapist now sees it straight away: "Your therapist can't hear you", with Reconnect sound, which brings the sound back without leaving the visit (on the web and in the app). Before the visit, the waiting room shows a bar that moves when the patient speaks, and says so when nothing is heard ("Close other call apps (phone, Zoom, WhatsApp) and check that microphone access is allowed"). In the call, the microphone button carries the same bar. The therapist sees "No sound from {name}" on the patient's picture, says apart a patient who muted themselves from one whose microphone is not connected, and can Ask patient to reconnect sound, which brings the button up on the patient's screen; it never turns the patient's microphone on by itself. Every sound failure and every reconnect is kept with the visit, with its cause, so support can tell what happened. The app's part arrives with the next app update.
  • Plan assistant: a week is no longer the same day seven times. Asked for "a plan for the week", the assistant could copy one of the therapist's templates onto the week unasked, or put the same exercises on every day. It now uses a template only when the therapist asks for one, and a week alternates two or three different sessions, with only the key exercises on every day; "the same every day" still gives identical days. See Plan Assistant.
  • Plan assistant in Russia: fewer "took too long" errors. A connection to the AI service that doesn't open is now retried after 5 seconds instead of hanging until the two-minute limit, and on self-hosted sites the changes appear one by one again instead of all at the end.
  • The app's Profile tab no longer starts under the status bar for therapists: it has the same header as Messages, on iPhone and Android.
  • The day's appointment cards on the therapist app's Patients screen line up with the rest of the list instead of sitting further in.

[2026-10-29]

Changed

  • Compact sets, and weight only where it is asked for. With Vary by set on, each set is now a small card ("Set 1" and its remove cross on one line, then the target), in rows that wrap instead of one tall line per set; + Set is the last card, and the Reps / Range / Max switch sits small inside each card. In Russian "Подход 1" no longer breaks over two lines. Therapists can now give each set its own weight (20 / 20 / 25 kg): the weight boxes appear once the exercise has a weight, or after + weight; an empty box means the exercise's weight, and the Weight field reads By set when the sets differ, with the range ("20–25 kg") on the row. In the patient's logbook (app and web) the weight column shows only when the therapist gave a weight for that day or the patient already logged one in that session; otherwise + weight under the sets opens it for that exercise, in that session only. Exercises already prescribed with a weight look as before.
  • Plan assistant: swap or reorder a day's sessions. Therapists can now tell the assistant "swap Wednesday's sessions", "put the evening session first", "on every day put the morning one first" or "add morning gymnastics on Monday before the main session", in the web plan builder and in the app's Manage HEP. The session moves whole: exercises, doses, blocks, block notes and its name; the rows light up and one Undo reverts the answer, as for every other change. When the therapist says "morning" and "evening", the sessions get those names. A session the patient has already started stays where it is, and the assistant says so. App builds older than this change are asked to update the app instead of silently doing nothing. See Plan Assistant.

[2026-10-28]

Added

  • Repeat a past session (Therapists). A session that went well can go back on the plan without rebuilding it: Repeat sits next to past sessions in the patient's Workouts tab on the web, on every finished session in the patient's sessions list in the app, and on the app's session screen. Pick one or more days of this week (today and the six days after), the same way as Copy to…: days the patient has started are locked, and days that already have exercises are marked with a warning that they will be replaced. Only the prescription is copied (exercises, sets, reps, weight, time, per-set targets, blocks, pain and effort targets and your notes), never the patient's results, notes or videos. Exercises removed from the library since are left out, and you see how many ("2 exercises are no longer available and weren't copied"). A confirmation says where it went ("Copied to Thu, Oct 30") with Open plan. The patient sees the session on that day straight away. The plan's schedule stays as it was: a repeated session is a one-off, and the plan carries on as before.
  • Approval of new therapists (per clinic). A clinic that lets therapists sign themselves up can now ask an administrator to approve each new account first (the doctorApprovalRequired flag, next to doctorSelfSignup). The sign-up page says so; after signing up, the therapist sees Your account is waiting for approval on the web and in the app, with Check again and Sign out, and nothing else opens until an administrator approves them. Administrators get an email when someone is waiting, with a button to the admin panel's Users page (new Not approved filter and a count above the list) or to the clinic area's Therapists page; the therapist gets an email the moment they are approved. Without the flag, nothing changes: new therapists are approved at once, as before.
  • Clinics, from the admin panel. Platform admins can now create a clinic on the new Clinics page: its name, web address, logo, colour and language in one form. The clinic's website is then set up on its own, and the page shows each step as it happens. Anything that has to be done by hand is listed with the exact record to create, with Try again once it is done. The same page edits a clinic's name, logo and colour later, and links to inviting its first administrator.

Changed

  • The waitlist, worked from the front desk (Clinics with scheduling). Getting someone off the waitlist used to mean booking them from the calendar and then remembering to remove them. Now Schedule → Waitlist counts the people waiting on its tab and shows, for each person, what they wait for, how long they have waited, their phone and email, their note and any time held for them. Book a time opens the booking screen with the patient filled in, and the booking takes them off the list; so does any booking of what they waited for that is their next visit, from the calendar, the app or the patient themselves (someone already booked who asked for an earlier time stays on the list until they get one, and the booking screen says so). Offer a time holds a time of your choosing with one of the patient's own therapists and sends them the same link a freed slot would; when they answer on the phone, Book the held time or Pass to the next patient. Entries can be edited without losing their place, and the latest past entries fold out below. Held times show on the calendar as dashed blocks, and the booking screen says when a time is held for someone else; booking over it ends the hold and the patient waits again. Patients and staff can say on which days and at what time of day the patient can come (and, for the staff, between which dates), and a freed slot is only offered to someone who can take it: never a time later than a visit they already have.
  • Deleting a test account that has notes or claims (Admin). The admin's Delete now says why an account can't simply go: its visit notes, plans of care or insurance claims are kept on record. The dialog lists them and offers Set inactive and, for a test account, Delete everything, which removes those records together with the account after typing DELETE. Two things never go: a real claim sent to a payer, and visit notes or guidelines a therapist's account wrote. Setting an account inactive from the admin panel now also signs the person out on every device, as Deactivate already did in the clinic area. A delete the database refuses for another reason now names the record in the way instead of "Failed to delete user".
  • Exercise pickers fit a small laptop. In the template editor, the program builder's library and the Select exercises window, only the search box stays put; the All / My exercises / Favorites buttons, the tag filter, the chosen tags and the AI results line now scroll away with the exercises, so on a 13–14" laptop two full rows of exercises stay in view with each name and its + together. The AI results are one short line ("AI: “knee” · 10") with an × to clear them. The template editor now fills the screen like the program builder, with a slim header and the name, category and length on one row, so the exercises start higher; it also lost its library heading (the search box says what it does) and fits as many cards per row as its column allows. On a short window the Select exercises window takes almost the whole screen with its buttons always visible. The program builder puts Templates and Filter by tags on one row and keeps the "Adding to…" strip in place.
  • The plan assistant suggests the next request. Before the therapist types, the assistant's column in the web plan builder and the classic editors, and the AI sheet in the app's Manage HEP, offer a few requests as buttons, read off the patient's record and the week in front of them: Ease off Glute Bridge (pain 7/10 last Monday), Act on the note about Hamstring Stretch, Progress Clamshell (done twice with little effort), Make the week lighter (two sessions missed), Progress the week (everything done, little pain), Restart gently (no session in three weeks), Work toward the goal, and for an empty week Repeat last week or Build a week for ACL reconstruction (8 weeks since the surgery). A pain that has settled since, a session the app only marked done because the patient opened it, or a note that just says "ok" suggests nothing. When there is nothing particular on record, the general ones stay (a warm-up or cool-down the week lacks, make it easier, and progress it once the patient has done a session without much pain). A tap sends the request as if typed, reason included, so the changes can be undone like any other. In the app the keyboard waits for a tap in the box, so the suggestions fit on a small phone. The example sentences and the four fixed quick buttons that stood there before are gone. For clinics with the plan assistant (flag planAssistant); see Plan Assistant.

[2026-10-27]

Added

  • Sign in with Google and Apple, on the web and in the app. Patients and therapists can sign in with their Google account or Apple ID instead of a password: on the clinic's web sign-in page, and on the app's sign-in step without typing an email first. An account a therapist created signs straight in when the Google or Apple account carries the same email, and is linked for next time; the app finds the clinic on its own, or asks which when the email belongs to several. On the main Otera and OKTA sites, and in the app's plan builder, an account can be created from Google or Apple too, with no password. Switched on per clinic with the socialSignIn flag; off until then.
  • Plan assistant (per clinic). In the web plan builder, therapists now say what should change and it happens on the plan in front of them, as they watch: "add clamshells 2×15 on Monday and Wednesday", "bridges: 4 sets on Tuesday only", "make Friday the same as last Tuesday", "take the hamstring stretch off the weekend", "my knee template on Mon/Wed/Fri". Each request becomes a few small changes to the week; the rows it touched light up, and everything else stays exactly as it was, notes, set plans and targets included. A whole answer can be undone with one click, questions come with options to tap, and the first week can be built from the notes the same way, exercise by exercise on the canvas. Nothing reaches the patient until the therapist saves. It also understands the rest of a prescription ("10 reps with a 5-second hold", "rest 60 seconds", "left side only", "tempo 3-1-3", "walk 200 m", "RPE 7"), exercises done as needed or every few hours, the order inside a session ("put the stretch first"), session names ("call Tuesday mobility") and, where the clinic uses the workout logbook, block notes ("note for the warm-up: go slowly"). The same assistant answers in the classic plan editors and in the app's Manage HEP, where changes land on the screen as they are made, with Undo. Clinics without the flag keep the previous assistant, which proposed a rewritten week to accept or reject. Flag planAssistant; see Plan Assistant.
  • The rest of the prescription. Besides sets, reps or time and the weight, an exercise can now carry a hold (seconds at the end of each rep), the rest between sets, the side (left, right, each side, alternating), a tempo, a distance (metres for OKTA clinics, feet for OTERA), as needed and every N hours. Therapists set them under Advanced on a builder row and under More in the app's dosage sheet (the classic editors show them); patients read them under the dose on every screen, in the PDF and in the workout reminders. Older app versions keep working and keep what the therapist set.

Changed

  • Signed in right after a password reset. Setting a new password from the reset email now signs you in on the spot, on the web, instead of sending you back to the sign-in page to type your email and the new password again. The page first shows which account the link is for, and says straight away when a link has expired or was already used, before you choose a password. If this browser is signed in as someone else (a relative's account, or a therapist's own), the page says so and lets you sign out first or keep that session. Accounts that sign in with an emailed code are signed in straight away too, since the reset link came to the same inbox. As before, a reset signs out every other device. The reset email still opens the web page when you start from the app: on a phone you set the password there, then sign in to the app with it once.
  • No sign-up on clinic sites. A clinic's web site no longer offers a sign-up: the Sign up links are gone and the sign-up page says accounts are made by the clinic. Patients come through their therapist's invitation, a sign-in link, the in-clinic QR code, or the clinic's own join link where it is switched on. The main Otera and OKTA sites keep their sign-up.
  • One step to start a visit. The appointment sheet (web and app) has one main button, Start visit: it checks the patient in, starts the visit and opens the note, with the timer running in the app. The other buttons sit under it. On a colleague's visit the front desk's main button is Check in. A no-show gets Came after all.
  • The app's Today card opens the visit. Each row opens the visit's own sheet: the intake's summary and red flags, the brief before the visit, Start visit, running late, a move, a cancellation, Open patient. A This week card under it shows the days ahead.
  • The draft writes itself when the visit ends, where the clinic has it on: when the timer stops, the visit is marked completed, or a note is opened for a visit already done. The note says AI is writing it, and it can't be signed until the draft is there to read. Draft with AI stays.
  • Signing is one click. The attestation stands as text over the Sign button. Send the summary to Anna when I sign shows the whole after-visit summary, says AI wrote it, and sends that text with the signature. A draft with nothing in the way can be signed in the app too; the sign sheet lists the services billed with it.
  • The next visit after signing. The signed note (web and app) offers the same time next week in one tap (a follow-up after an evaluation), the nearest free times when it is taken, or Book the plan: 2 times a week for 6 weeks after an evaluation with terms. The patient's next visit already booked is shown instead, and a discharge offers none.
  • The brief is ready before the visit. AI writes Before the visit ahead for the next 18 hours' visits with something on file, where the clinic has it on.
  • Visits nobody closed. Two hours after a booked visit nobody checked in or closed, the therapist is asked once, "Did Anna come?". The Documentation worklist lists these under Visits to resolve, with Came and No-show. A day after the visit, with no answer, it is marked a no-show (a clinic setting, or "only ask"); Came after all undoes it.
  • Booking. Booking starts with the patient's own therapist, every time picker has First available (also for patients and on the booking page), and a therapist with no working hours is told so. The calendar marks each finished visit's note: none, draft or signed.
  • For patients. A booked visit offers Add to calendar and Directions on the web (the app offers directions).
  • Also fixed. The visit's history now says what completed it. A note whose kind differs from the visit's says so. New note warns when an evaluation was already signed that day.

Fixed

  • No second consent after signing in with a code. Signing in on the web with an emailed code no longer opens the privacy consent again for accounts that already gave it.

[2026-10-23]

Added

  • Clinical documentation (per clinic). Clinics can now write their visit notes here, tied to what the platform already knows about the patient. Therapists start a note from an appointment (Start note once the patient is checked in), from a video visit (Document this visit) or from the patient's new Documentation tab, in one of five kinds: initial evaluation, treatment note, progress note, re-evaluation and discharge summary. The evaluation opens a plan of care (diagnoses, problems, "2 times a week for 6 weeks", interventions, precautions, the physician's certification) with goals that every later note reports on; outcome measures (LEFS, ODI, NDI, QuickDASH, PSFS, NPRS, TUG, the 6-minute walk, five times sit-to-stand, Berg) show their change against the first score and whether it is meaningful; the measurements of the clinic's own camera and sensor tests can be imported into the findings. Draft with AI writes the first version from the intake, the earlier notes, how the home program went, the measurements, the scores, a video visit's notes or transcript and what the therapist typed or dictated during the visit; it fills only what is empty, says in words what it was drafted from, and proposes the diagnoses the record names, the services it saw, goal updates, red flags and points to verify. Where the clinic bills, the note carries the CPT lines with their minutes and the units follow the 8-minute rule; the evaluation's complexity sets its code. Sign freezes the note, puts a read-only copy in the patient's Notes, updates the plan and the goals, completes the appointment and, where the clinic bills, lists the visit in Claims › To bill with charges from the new visit fee schedule in Claims › Setup; afterwards an addendum, a correction or "entered in error" is signed on top, never over it. The Medicare rules are built in and shown on the note, the chart and the claim's checks: a progress note at least every tenth visit, the plan's 90-day certification, the yearly threshold ($2,480 in 2026, KX added past it) and the $3,000 review threshold, an episode that lapsed after 60 days. A plain-words after-visit summary can be sent to the patient in Messages. The dashboard gets a Documentation tab (drafts to sign, visits without a note, what is due, and New note for any patient, which asks which of the day's booked visits it is for), and the patient window opens on its Documentation tab; the calendar shows where a progress note is due and which visits fall after the plan's certification, warns when booking past it, lists active plans with nothing booked, and signing a discharge offers to cancel the visits still booked; the clinic area a Documentation tab (unsigned and late notes by therapist, what is due, notes ready to bill, the settings). In the iPhone app, therapists see the patient's plan, goals and notes, start a note, time the visit, note the pain scores, type or dictate quick notes and ask for the draft; the review and the signature happen in the web app. Switched on per clinic with the clinicalDocumentation flag.
  • Clinical documentation: the clinician's round. What a clinic's therapists asked for after the first week, built in one go. The evaluation day: a patient who came without a referral gets the treating diagnoses proposed by AI from the findings, marked as AI's reading and verified with a tap, never put on the note by themselves; how often and for how long can be a range ("2 to 3 times a week for 4 to 6 weeks"); the rehabilitation potential is picked, and AI proposes the terms, the planned interventions and the prognosis; goals come SMART and whole (the function, the baseline, the target, in how many weeks, turned into a date); the note, the chart and the app say how long it has been since the operation or the injury the plan treats ("6 weeks after surgery · Total knee replacement"); measurements can be typed as well as imported; a note can be marked as having nothing to bill, and a discharge written without a visit. Findings: special tests (from a catalog by region, with the side and the result) and strength as manual muscle test grades, printed under the objective findings and filled by the draft from what the sources say. A sixth kind of note, the recertification, suggested when the certified period is about to end; signing it opens the next period. Templates: a built-in starter set (evaluations for the knee, hip, shoulder, low back, neck and ankle, a treatment note, a progress note, a discharge), the clinic's shared templates and the therapist's own, saved from any note; a template fills what is empty, including the tests to examine and the questionnaires to collect; each section can also be copied from the last signed note. Questionnaires to the patient: Ask the patient sends LEFS, ODI, NDI, QuickDASH, PSFS or the pain scale to the patient's phone or email, to answer by tapping without signing in; the score lands on the chart as theirs with the change since the first; the fitting one is recommended by the diagnosis and can go out on its own with the intake and before a progress report, with one reminder; the app's dashboard lists what is waiting. Amendments now add what was found later (a score, a measurement, a test, a grade, a goal's status) and correct the pain, the measurements, the findings, the diagnoses, the terms, the discharge card and, until a claim carries the note, the services, each shown as before and after. The referral and the documents on the record: the script dropped as a PDF or photographed in the app is read by AI (the physician and NPI, the date, the diagnoses, how often and for how long, the visits authorized, the restrictions), confirmed field by field and put onto the plan of care and the claims portal's referring provider; a patient who came on their own is marked so; physician reports, the surgeon's protocol, the insurance card and anything else are kept on the record in the clinic's private storage, opened from the chart, and read by the draft when they are PDFs; where the clinic bills, a photo of the insurance card fills the patient's insurance as the intake does. The home program from the note: a signed evaluation (or progress note) opens the home-program builder with the note's whole picture already in the notes box. Smaller things: the therapist's credentials are set once under Profile › Signature (web and app) instead of at every signature; the intake asks a patient with a hip, knee, ankle or foot injury whether they could walk on it right after, and flags "could not"; the intake request and the reminders say why to fill it now ("three minutes, and your visit starts on time"); on the therapist's side of the web app, a patient's "workouts" are now their home program and its sessions, in English and in Russian.
  • Leaderboards (per clinic, behind a flag). Patients get a Your week card on the home screen, in the app and on the web: a ring that fills as the week's sessions are done, the points (1000 for every planned session done, and never more for doing extra), the tier and one line about what comes next ("One session puts you past Quiet Otter."). The card opens the leaderboard: the podium of three, the three people directly ahead, and the patient's own row, ranked by this week's points or by streak, for the clinic and, where the clinic takes part, across all clinics. Nobody is ever shown below you, and no board says how many people are on it. Everyone appears under a random nickname, an adjective and a cute animal in English or Russian, which can be changed once a day; a patient can also hide from the boards, and their numbers still count for their care team. Tiers (Bronze to Platinum) are earned against fixed thresholds over the last four weeks, and a patient's last finished week is compared with every patient who has ever been in the same week of a plan. On Monday morning one push recaps the week.
  • A Leaderboard tab for therapists. The clinic's therapists by name, for the month: the share of their patients' planned sessions that were done, first-week starts, comebacks after a message or plan change, and median reply time, each its own board, plus the therapist's own tiles. Under them, the patients who can still make their week and the ones who went quiet, each with a Message button, and every patient of theirs with their nickname, points and tier. Across clinics therapists appear under a nickname too. The same view is a card at the top of the Patients view in the app.
  • Booking: the right type of visit and its length. Booking a visit now starts on the initial evaluation only for a patient's first visit (someone just added, or with nothing booked, no visit note and no home program yet) and on a follow-up for everyone else. The length can be set when booking, from 15 minutes to two hours, and an appointment's Change length makes it longer or shorter later (a longer one only into free time). In the patient window, the intake button says what it will do: Remind them about the intake while one is unanswered, and Ask for a new intake, with a confirmation, once one was sent. The same booking defaults and lengths are in the iPhone app. The Schedule link at the top of the web app no longer waits for the dashboard to load.
  • Claims: the rules, listed and dated. Every rule a claim is checked against is now listed under Rules in the admin claims portal: what it holds the claim to, who it applies to (everyone, Medicare, remote monitoring, visit notes, corrections), where it comes from, with a link where there is one, the day it was added, and any change since. Newest first, with a search box, so when a payer rejects or denies for a reason nobody wrote down yet, the rule that fixes it goes in with its date.
  • Patients' comments show in Messages without opening the session (Therapists, web and app). A patient's feedback card now shows what they wrote about the whole session ("How it went", with their pain and effort), not only their notes on single exercises, so a therapist reads the message in the thread. The card's headline is written in the therapist's language and names only the exercises that reported high pain; the notes are in full, each exercise's pain and effort show as chips, and the button reads Open session. The conversation list (web and app) previews the patient's own words.
  • Edit session, the classic plan editor and Create session, redesigned (Therapists, web). The exercise rows that Edit session opens are now the design system's: a picture and the name, the dose as steppers (sets × reps or seconds, the weight beside them when there is one), + Note for the instructions to the patient and More for the weight, the block and the pain and effort targets. The classic plan editor keeps its flow (a week of day tiles, a preview, a day that opens to edit) with calmer tiles that show the weekday and how many exercises each day has, a preview of one card per day with the exercises as rows, a one-line hint instead of two banners, and a plain Save changes footer; the day editor says the day's date in its title. The exercise picker got the shared search box, scope chips and card look. Leaving any of these with unsaved changes asks first, and the old "at least one exercise" browser alert is a toast.
  • A patient's video goes to the patient, not the library. Therapists sometimes film a patient from the app's Exercises tab, so the clip ends up as a private library exercise. Now, in clinics with personalized videos, attaching a video to a new exercise asks Who is this video for?: Everyone keeps it as the demo, One patient picks the patient, and Save becomes "Save and add to {Name}'s plan": the exercise is created, the video becomes that patient's own video, the exercise joins their plan and the dosage opens, the same as recording from the patient's page. When an older exercise like that is added to a plan, the picker asks "Is this video for {Name} only?" and one tap keeps it with them; it never asks about a video other patients' plans use, and "It's a demo for everyone" is not asked again. The exercise's own screen has Keep with one patient for the rest. Two safeguards hold regardless: the clinic's automatic exercise merging leaves such exercises alone and never copies a private exercise's own video onto a shared one, and making an exercise with an uploaded video public asks first, in the app and on the web.

Changed

  • A wrong password now offers the way out. On every sign-in screen, on the web and in the app, a refused email and password turn the small Forgot password? link into a clear prompt, "Did you forget your password?", with one button to reset it. The reset sheet opens with the email already typed, so nobody types it twice. The reset goes by email, so after a sign-in with a phone number the plain link stays. The sign-in inside the app's plan builder, which had no way to a forgotten password at all, now has the link too.
  • Video visit messages look like cards. The invitation to a video visit no longer shows a long link in the message thread: it says who opened the visit, with one Join the visit button for the patient (and Open the visit for the therapist who opened it). The summary sent after the visit sits under its own "Visit summary" heading. On the web and in the app (with its next update).

Fixed

  • Claims: Medicare and the plan name. A Medicare claim no longer carries the patient's group number or plan name (Medicare has no groups and rejected a claim that named "Medicare Part A, Medicare Part B" as its plan). Both can stay on the patient's record; the claim leaves them off and says so. For other payers a claim now carries the group number or, only when there is none, the plan name, never both. A claim whose coverage check answers as Medicare while the insurance type says otherwise now warns to set the type to Medicare. The Group number and Plan name fields on the patient's insurance say what goes on the claim.
  • A claim's history after a resend (Claims). Resending a rejected claim no longer brings the first send's acknowledgments back as new lines without their reasons, a clearinghouse's "received" no longer hides the payer's acceptance, and each acknowledgment shows once, at the time Stedi processed it. A late report about the first send no longer marks the resent claim as rejected.

[2026-10-21]

Added

  • Otera Measure: measuring without an account, and Google or Apple sign-in. Every tool is free, and no account is needed to measure: the app opens on the measuring tools, the phone and the camera read the angle live, and only saving a measurement asks for an account. Saving keeps what was just measured through the sign-in and opens it as a session or result straight after. An account is created with Google, with Apple (on iPhone) or with an email and a password, and the same three sign in.

[2026-10-19]

Added

  • Scheduling (per clinic). Clinics can now keep their appointment book here. Therapists get a Schedule page: a calendar by day or week, booking a visit (or the same slot every week for a plan of care) from the free times, moving and cancelling, and the steps of the day: confirmed, checked in, in progress, completed, no-show. Each therapist sets their working hours and time off; the clinic sets its types of visit (initial evaluation, follow-up, video check-in, a class…), its locations and its policies (how soon and how far ahead patients may book, the cancellation window, when reminders go out) under Clinic → Schedule. Patients see Appointments on the web and in the app: they book with their care team, confirm from a reminder with one tap (also from the link without signing in), move or cancel, and can join a waitlist that offers them the first slot that frees up. Before a first visit, patients fill in a short intake; AI may ask two or three clarifying questions and writes the summary the therapist reads before the visit, flagging what needs a look first. For any appointment the therapist can ask AI for a short Before the visit brief from the patient's record; the button stays off while nothing is on file yet, and each brief is kept as a note on the patient too. No time that suits? Add to the waitlist sits right under the free times, for the staff and for patients. Everything AI writes says so in words. Switched on per clinic with the scheduling flag. Every link a patient gets (the appointment, the intake, a waitlist offer) opens without signing in; a new patient can be added right from the booking screen, and a therapist's working hours changed from there too.
  • A booking page for people who are not patients yet. A clinic can switch on /book on its own address: what brings you in, when (first available or a therapist who takes new patients), who you are, done, in four screens and with no password. By default the time is held as a request the clinic confirms or declines from a new Requests tab (or the page books instantly); the person gets the appointment link, the intake and a calendar file by email, and can set up their account from the appointment page when they want to.
  • The intake, now guided and tapped. One question per screen, answered by tapping, about a minute: six questions (seven when the place has a side): where, since when, how much it hurts, what matters most; then AI may ask up to two follow-ups when something is unclear; then one screen of warning signs and one of what is on file (an injury or surgery behind it, conditions, medication), then the clinic's own questions. The rest the therapist asks in the room. A sent intake is also kept as a note on the patient for the therapist, marked as written by AI. Nothing has to be typed ("Something else" opens a line with dictation on the web). At the end AI reads back what it heard; "Not quite" fixes it. Where a US clinic with the claims portal asks, the last screen takes two photos of the insurance card.
  • A plan of care in one go. "Twice a week for six weeks" lays the visits over the calendar before booking, moves a taken time to the nearest free one, and books the rest at once.
  • The next visit before the patient leaves. Marking a visit completed offers the same time next week (or the nearest free times) with one tap.
  • The day of the visit. Patients say I'm here from their phone inside the hour before; therapists say they are running late with one tap and the patient hears. Reminders and changes also go by text message where the patient has a mobile number, every appointment email carries a calendar file, each therapist gets a calendar feed to subscribe to, and a clinic can release visits nobody confirmed a day ahead so the waitlist gets them.
  • Live call, for months the clinic bills from Claims. On the RTM tab, a pending month of management time now has Live call next to Billed and Won't bill: the therapist confirms the live, two-way conversation (and that the time is accurate) without marking the month billed, so it stays in To bill and the clinic can send the claim, which then marks it billed. Unticking withdraws it until the claim has gone out. In To bill, a month still waiting for this no longer holds back the patient's other periods. Clinics that don't use Claims keep Billed as before.

Removed

  • The last of the Clinics apps. The separate Otera Health Clinics and Okta Health Clinics apps were retired in February, and what was left of them is gone: their build and update settings, the app's separate clinic welcome and sign-in wording, and the two old web addresses /mobile-oteraclinics and /mobile-oktaclinics. Those addresses, found only in workout emails sent up to February 27, no longer lead to the app download page. Clinics' patients keep using the Otera Health and Okta Health apps, which work as before.

[2026-10-18]

Added

  • Movement tests for more joints (Mobile, requires app 2.2.0 from the app stores): the clinical assessment now measures the elbow (flexion), the hip (flexion, extension, abduction), the ankle (dorsiflexion as the knee-to-wall lunge), the neck (flexion, extension, lateral flexion) and the trunk (flexion, lateral flexion) from video, the same way as the shoulder and the knee: live tracking while filming, a measured peak per side, playback with the overlay, the session table and report. Patients can be assigned the new camera tests as a screening.

Changed

  • Every email, redesigned. Invitations, sign-in links and codes, password resets, welcome emails for therapists and clinic administrators, daily reminders, new-message, screening and video-visit notices, feedback updates, campaigns and announcements now share one look: the platform's name above a plain white card on a warm background, one blue button, clear headings, no banners, gradients or emoji. The wording is shorter and says what to do ("Set up your account", "Start today's session"); subjects say what happened ("Anna Lee invited you to Otera Health", "482913 is your Otera Health sign-in code"); doses read as on the printed plan ("3 sets of 10 reps, 20 lbs"); lines an AI wrote say so, including the summary of a single movement test. Most emails end with a quiet line saying why they were sent. Messages and notes typed into an email show as plain text, and a therapist's nudge arrives exactly as typed, without a second greeting around it. No email asks for a reply any more, since replies reach a shared inbox rather than the therapist; they point to Messages instead. Each email speaks its reader's language under the region's brand: on OKTA the new-message notice and the buttons that were still in English are now in Russian, and a video-visit invitation in another language no longer opens with an English greeting. A sign-in link for a patient who signs in with an emailed code now says the page will send them a code, and the welcome email mentions AI plan extension only where the clinic has it on. Outdated lines such as "Android app coming soon" are gone.
  • Manage HEP in the app fits more on the screen (Therapists). In Sessions, a day is no longer a big white card: its date, session number, exercise count and focus sit above its exercises, with Add for that day and a more button for reordering and copying. Each exercise shows a larger picture, the dose the way the rest of the app writes it ("3 × 10 · 5 kg"), small tags for the block and for pain and effort targets, and the note on one line. In Program, cards are about half as tall and show the patient's instructions: tap the day dots to pick a schedule (Every session, Every other, Weekdays, Mon · Wed · Fri, Tue · Thu or Custom) with no confirm step, or tap the dose to change sets and reps right on the card. The whole week stays on one row, even with three sessions a day. The copy sheet and the day buttons no longer show the day before on phones in the Americas.

[2026-10-17]

Added

  • Otera Measure: the screening tools as an app of their own. Clinicians can now get the clinical assessment without the rest of the platform, as a separate app in the stores: the camera tests with the live skeleton and the measured report, the phone-on-the-body passive and active tests, Quick measure, playback with the overlay and the session reports as PDF. A clinician creates an account in the app, and every tool is free. The home shows the ways to start measuring, three numbers and the latest sittings; settings hold motion tracking, the language and the account, which can be deleted from the app. Each clinician's measurements are their own: nobody else using the app can see them, or see who else uses it.
  • A little celebration when a session is finished (App). Finishing a session now feels like finishing: a quick burst of confetti and a short rhythm of taps on the phone, whichever way the session was finished, from the guided flow's summary, from Mark as finished, or from the logbook's Finish workout (where the sheet now shows "Workout logged!" for a second before returning to the dashboard). It is over in about a second, never gets in the way of a tap, and with reduced motion on only the taps play. The guided flow's summary also stops asking you to save a session it has already saved: it now says "Nice work. You finished every exercise."

Fixed

  • AI exercise videos show our model, not the original actor (Admin). Videos made in the MedBridge and Kinescope studios sometimes took something from the person in the original video: their face on our model, or hairy forearms in a close-up of the hands. Every prompt the AI writes for Seedance 2.5, Seedance 2.0 and MiniMax H3 now opens with the same description of our model (her face, hair, smooth arms and outfit) and tells the video model to take only the position, equipment and camera from the original video's pictures. The AI that writes the prompt now sees her photo, and Revise with AI checks the person in the finished video against it. Prompts written by hand are sent as written; MiniMax Hailuo 2.3, which brings the first picture to life, still shows the original person.
  • Connection requests. Only the person who was asked can accept or decline a connection request, and a request can only go to a patient or a therapist of the same clinic.
  • Privacy and Terms in Otera's apps. The screen shown at sign-up now gives team@oterahealth.com as the address for questions about your data (it named OKTA's).

[2026-10-15]

Added

  • Insurance claims (Clinic › Claims, Admin › Insurance claims). The first step of the clearinghouse integration, through Stedi: a clinic's administrators get a claims portal that bills the remote therapeutic monitoring periods the platform measures. Setup holds the clinic as the billing provider (NPI, tax ID, taxonomy, address with ZIP+4, phone), the fee schedule for the six RTM codes, the defaults every claim starts from, and each therapist's NPI. Patients keeps each patient's insurance (the payer found in Stedi's network, member ID, plan type, policyholder), their details for claims (sex, address, diagnoses, consent to monitoring, which starts as the day the patient was added to the platform, and the referring physician), and Check coverage asks the payer in real time whether the plan is active, with copay, coinsurance, deductible, out-of-pocket, prior-authorization and other-coverage answers kept on file. To bill lists every 30-day window and every finished month of management time nobody billed yet, with what each would earn and what stops it, and builds one draft claim per patient. Before a claim goes out it passes a long list of checks (the clinic's setup, the patient, the coverage, the lines, and the RTM rules: days per window, minutes per month, an attested live conversation, no period billed twice, 98975 once and only after the patient has sent 2 days of data) and can be run through Stedi's own edit library; a blocker stops sending, a warning asks to be read. Sent claims mark their RTM periods as billed on the therapists' tab and are refreshed from Stedi twice an hour: acknowledgments, rejections with their reasons, and remittances with what was paid, what the patient owes and every adjustment code explained in plain words with the next step. A claim the payer has can be corrected or voided; after a void its periods can be billed again. The portal says when it runs in test mode (nothing reaches a payer). The clinic flag is claimsPortal; the platform team connects Stedi once for everyone.
  • Fill a patient's claims details from EMR screenshots (Clinic › Claims › Patients). Instead of retyping what the clinic's EMR already holds, Fill from screenshots on a patient's page takes screenshots of their record there (the insurance page, the patient page, the case with the diagnosis), dropped, chosen or pasted all at once. The AI reads them once and shows the payer, member ID, group number, plan and policyholder, the date of birth, sex and address, the diagnoses and the referral; the payer is matched in Stedi's network by the ID on screen. Fill in the forms puts the values into the two forms, marked field by field, and nothing is saved until the forms are. Anything the AI could not read for certain is left empty and named, and screenshots of a different name or date of birth are stopped until you confirm they are this patient's. The screenshots are not kept.
  • A sign-in link for patients who already have an account. Once a patient has set up their account the invite buttons are gone, and "how do I invite this person again?" had no good answer. Now a therapist can send a sign-in link: on the web from the patient row's menu (More actions → Send sign-in link) or the patient's Profile tab, and in the app from the patient's quick actions. The patient gets an email, from their therapist's name, with their account email and one button. If they are already signed in on that browser, the link simply opens their dashboard. If not, the page shows their email and asks for their password; if they have forgotten it, Set a new one lets them choose a new password right there and signs them in, with no separate reset email, because getting the link already proved the email is theirs. A link works for 7 days, for one new password, and only until a newer link is sent or the patient signs in; it stops working if the patient's email is changed. If someone else is signed in on that browser (a relative, or the therapist testing the link), the page says so and offers to sign out first instead of opening the wrong account. A patient who never finished their invite still gets the invite instead.
  • Measure first, name the test after (Mobile): two free goniometers under Quick measure on the clinical assessment screen. Phone on the body reads the range with the phone on any segment (tilt, or turn for rotations), measurement after measurement until you stop, whether you move the segment or the patient does with the phone held on; Camera reads the angle of whichever joint you tap on the live picture, choosing the measure by the joint and the view (a shoulder or a hip reads abduction facing the camera and flexion from the side). The measurements are then named one after another from a searchable list of every range-of-motion movement, active or passive, with Right / Left per row and your last picks on top, or saved under a name of your own, and reach the session, the report and Recent Tests like a test from the catalog. Active measurements taken with the phone get their own rows, "Active (phone)", with the joint-angle typical ranges, apart from the camera's rows and the passive ones.

Changed

  • Passive tests zero faster and forgive a shaky hand. The phone on the body takes its zero after about a second of stillness, as the average of that second; a hand's tremor or a knock on the phone no longer restarts the count, while sliding the phone into place still does. The screen shows a bar filling instead of a 3-2-1 count.
  • Camera tests start at once. The phone watches the start position while you frame the shot: when the patient already stands still with every joint in view, recording begins the moment you press Start. Otherwise the count is 2-1 over one second instead of 3-2-1 over one and a half.
  • New homepage for clinics: the Otera and OKTA homepages were redesigned with a calmer look and shorter copy. The hero is a photo of a therapist guiding a patient through a shoulder exercise while the tablet beside them follows the movement on a 3D body model, with a visit note, a finished AI call and a reviewed screening floating around it on wide screens (no angle figures anywhere in the hero, so nothing reads as a measurement). Below it: eight (Otera) or six (OKTA) platform cards with warm clay-style illustrations that also appear on the loop, the onboarding steps, the AI band and the compliance strip, and sections about objective movement screenings and video visits with AI notes. The Otera page also presents remote therapeutic monitoring with its billing board, billing and claims management through the Stedi clearinghouse, EMR integration (Epic, Raintree, Stride, PtCare) and the AI call agent that confirms visits and follows up by phone; the OKTA page shows none of the billing content. Every visual is AI-generated or a product mock with fictional people, so no patient appears on the page.
  • Team, Careers and Pricing pages: /team presents the founder and CEO and the advisors (two clinical advisors, plus advisors on operations and growth) with photos, short career bios and LinkedIn links, with a longer founder story behind "Read more"; /careers lists open roles, all based in the US, with an email application button; and /pricing presents three per-therapist plans (Starter at $19, Clinic at $99 per therapist per month, Practice on request), two add-ons (AI call agents, priced per clinic; billing & claims management at 10% of collections), a feature comparison and pricing questions. The team page exists on the Otera site only; the OKTA site has its own Pricing (Старт, Центр and Сеть in rubles per specialist, no add-ons) and Careers (roles based in Russia) pages, with nothing about RTM, billing or EMR.
  • How it fits together: a new section under the platform grid maps who uses what, with a pulse travelling the loop. The clinic's roles (owner, therapists, front desk) on one side, the patient's touchpoints (the app, a visit link, their phone camera, the agent's call) on the other, the six-step loop of care in the middle, and the EMR and clearinghouse partners under it. On phones the loop becomes a numbered list.
  • Header and footer for visitors: visitors who are not signed in get a Platform / Pricing / Team / Careers / Contact menu (Platform, Pricing, Careers and Contact on OKTA), centered on wide screens. "Platform" opens a menu of every product with a short line each, linking into the home page; the mobile menu lists the same. Log in and Sign up now stay in the header at every window width; on tablets they sit beside the menu button, where there used to be no way to log in at all. Sign-in, password-reset and workout-link pages keep a plain header without the menu. The footer has Product, Company and Legal columns on the same navy as the page's dark panels.
  • Contact page: restyled to match the new marketing pages, with the same email, phone, WhatsApp and Telegram options and the feedback-board callout.

[2026-10-14]

Changed

  • The printed exercise plan, redesigned. Download Plan on the patient's Workouts tab now makes a plan that is easier to follow at home. Each exercise is a card with a picture two and a half times as wide as before, shown whole, next to its dose, instructions and any note from the therapist. Sessions that ask for exactly the same exercises and doses print once, with all their dates and a box to tick off each day; when the dose changes, the new version gets its own section. Doses read in plain words ("3 sets of 10 reps, 2 kg", "2 sets of 1 min 30 sec", and each set on its own line when the sets differ, which the old PDF got wrong). The PDF now also shows the session's name, the therapist's session and warm-up/cool-down notes, and pain and effort limits. The cover page and the per-day repetition are gone, so a plan that repeats its sessions takes far fewer pages (an 11-session sample went from 9 pages to 5). It uses the clinic's name and colour, in English or Russian.
  • Weights in the clinic's unit everywhere. A weight reads in kilograms for OKTA clinics and in pounds for OTERA clinics wherever it appears: the plan builder's Weight (it said "Kg" for every clinic), the therapist's exercise rows in the iPhone app (they said "lb" for every clinic), the AI plan changes (the AI was told pounds for every clinic), the printed plan, the Daily Review PDF and the workout preview email (which printed "кг" in English). The therapist's session details, on the web and in the app, now show the planned weight beside the dose, next to what the patient logged. The number is kept as it was typed; nothing is converted.

[2026-10-13]

Added

  • Workout logbook, for clinics that train their patients like athletes (per-clinic flag workoutLogbook). Start workout opens the whole session as one list, grouped into warm-up, main, supplemental and cool-down: every exercise with its target and one line per set under a single header: a box for the reps (or seconds) actually done, a box for the weight used (kg in Russia, lbs in the US, decimals allowed) and a tick, with the plan in grey inside the boxes and a weight typed once carrying down to the sets below; Mark done ticks an exercise in one tap, a note can go with any exercise, and the video plays only when the exercise is tapped. Everything saves as it is entered, so leaving the screen loses nothing and the home card says how many exercises have something logged. Finish workout asks once about pain and effort and saves the session, with streaks, the therapist's feedback card and the rest working as before. On the web and in the app (app update needed).
  • A different target for every set, and a note per block (Therapists). With the same flag, Vary by set on an exercise's dose in the plan builder and the classic editors gives each set its own target: 12, 10, 8; a range such as 8–12; or Max, as many as the patient can. Each block header in the builder's list view takes a Note for this block that the patient reads above the block. What the patient logged shows set by set in the session details on the web and in the app, with the pain, effort and note the patient gave for the whole session (also shown now for sessions finished with Mark as finished).
  • Ready-made templates for every clinic. The Workout Templates page now opens with Ready-made templates: 25 sessions built from the shared exercise library, from the first weeks after a knee or hip replacement, an ACL or meniscus injury or a rotator cuff repair to knee and hip osteoarthritis, low back and neck pain, ankle sprains, plantar fasciitis, tennis elbow and balance for older adults. Each comes with doses, blocks and a note to the patient, in English and Russian, and the post-operative ones say what to keep to and when to call the surgeon. Open one to see every exercise and its video; Copy and edit makes a private copy in your language that you change like any template of your own. They also appear in the template picker of the plan builders, whose cards now list each template's first exercises with their doses, and a template keeps its warm-up and cool-down blocks in the HEP builder. Creating a template has a new editor with the exercise library beside it and the same search as the HEP builder, Search with AI included; + adds an exercise without closing anything. Templates are now kept per clinic: a clinic's public templates no longer show in other clinics. Admin: a new Session templates page (Content) adds the built-in templates to a database (showing first what it would add) and creates, edits, hides or deletes them; they can only use exercises from the platform library.

Changed

  • A calmer look across the web app. Warm neutral colours on a near-white background, Nunito loaded with the app, simpler buttons with one main action per screen, flat cards with a thin border, and dialogs that open as sheets from the bottom on phones.
  • A patient's sessions at a glance, and a session that is easier to read (Therapist web). The Workouts tab of the patient popup no longer shows a grid of coloured boxes that only gave a date and a count. Each upcoming session is now a row with the day (Today and Tomorrow say so), its first exercises, and a note when it was moved from a missed day; each past session shows how many exercises were done, how long it took, whether the patient left a note or a video, and the patient's pain (coloured only when it asks for a look). Opening a session gives the whole picture on one screen: the day and time, done / time / pain at the top, How it went in the patient's own words, the exercises in their blocks with what was planned and what was logged, the patient's note on each, and your feedback with Add feedback right there; your note to the patient is written in place, no separate step. Upcoming sessions open the same way and are edited from one Edit session button. The dashboard's Sessions tab lists recent sessions in the same style, with When and How it went at a glance and the session opening from the row.

[2026-10-12]

Added

  • Kinescope studio: compare with MedBridge and make the AI video from either one (Admin). A Kinescope video now opens beside its best MedBridge match: both videos (played side by side on request), both sets of instructions and MedBridge's photos of the positions, with Same exercise and Not the same right there and Compare on every other match, so there is no need to open the MedBridge studio. Once they are the same exercise, the AI video can be made from the Kinescope video or from MedBridge's video and photos, from the same window: it shows there while it renders, arrives as one of the video's AI videos when it is ready and goes into the library from there. A new Not in the library yet switch lists the videos whose AI video the exercise library doesn't play yet, with their count.

[2026-10-11]

Added

  • Passive tests with the phone on the body: lay the phone on the patient's limb, head or trunk, hold still to set the zero, move the segment to the end of the range and back — no need to stop at the top — and the phone's motion sensors measure the degrees like a digital inclinometer. Available for every region, including the neck and the back (cervical and lumbar range), with the patient position and the phone placement spelled out per test. Passive range stays apart from the camera's active range: its own "Passive" rows in the session and the report, its own typical ranges.
  • The session report names each row by body part and movement ("Hip abduction", «Отведение бедра») and lists measurements taken once (neck and trunk flexion) with the other tests.

Changed

  • Building your own plan in the app, rebuilt. "I'm New Here" asks what's going on in your own words, reflects back what it understood, asks the few questions a physical therapist would (answered by tapping options), and shows your first week, every exercise with its video, before you create your account. If the plan can't be added to the new account straight away, the app says so and lets you try again.
  • Adjusting your plan, rebuilt. Patients of the main site tell the app what should change ("my knee is sore", "make it easier", "less time") or tap a suggestion, then see the new week with what changes and why, and accept it or keep their current plan. Sessions already started are kept.
  • Faster, without a blank wait. The app says what it understood within a second or so ("We have what we need", "A few more questions first") and shows each session as soon as it is written. It writes in the app's language, or in yours if you write in another.
  • Only exercises from the library. Every exercise in these plans is a public library exercise with a video; a therapist's private exercises and personalized videos are never used.
  • Warning signs first. Describing something like new numbness, trouble controlling the bladder or chest pain gets the advice to see a doctor today instead of a plan.
  • Clinic patients no longer rewrite their therapist's plan. A new setting, Patient Plan Updates, is on for the main Otera and OKTA sites and off for clinics unless an administrator turns it on. Where it is off, "Adjust your plan" in the app and "Manage your plan" on the web are hidden. In the app this follows the setting from the update that ships with it.

[2026-10-09]

Added

  • Kinescope studio: the exercise descriptions checked against their videos (Admin). The patient instructions of the shared library's Kinescope exercises were written from the exercise names, before anyone watched the videos. The studio can now have the AI watch a video and say whether the instructions describe it: Describes the video, Partly fits the video (the position, side, equipment or movement differs) or Doesn't describe the video, with what the video shows and the differences, and, when they don't fit, new instructions that an admin can edit and put into the library for every clinic in one step. Check descriptions with AI queues the checks for the most used videos first; the grid shows each video's state and filters by it, and the header counts how many descriptions are checked and how many have a new description waiting.
  • Kinescope and MedBridge studios show what the two libraries have in common (Admin). Each video or exercise now says whether the other library has the same exercise, matched by name or confirmed by an admin, and whether an AI video already exists there, as a pill on the card, a filter and a box in the open item with the counterparts, their AI video state, a link into the other studio and one-click Same exercise / Not the same. Find matches with AI has the AI read both libraries and find the pairs the names can't, such as a clamshell filed under "side-lying hip external rotation", shown as Likely the same (AI) with its reason; a near relative (a band added, one leg instead of two) is shown as a Variant (AI) and never counts as a duplicate. Working down either list no longer risks making the same AI video twice.
  • Marking the same exercise shares its AI videos (Admin). When an admin marks a Kinescope video and a MedBridge exercise as the same exercise, each one's finished AI videos are copied to the other, now and later, and show where they were made. If the MedBridge exercise's AI video is already in the exercise library, the Kinescope exercise switches to it too, so clinics get the AI video without a second render. The other way round, nothing new is added to the library: the Kinescope exercise is there already.
  • A video model picker for AI exercise videos (Admin). Both studios can now render an attempt with Seedance 2.5 (as before), Seedance 2.0 or MiniMax H3, which all show our model performing the exercise, or with MiniMax Hailuo 2.3, which brings the exercise's first still to life instead. Each model has its own length, resolution and prompt limits, and the AI writes the prompt to fit them; every attempt shows which model made it, so renders can be compared side by side. A MedBridge video made with Hailuo 2.3 starts from MedBridge's own picture, so it can't be added to the exercise library.
  • Kinescope studio sorted by usage (Admin). The studio can list the videos most used first, counting the plans across every clinic that play each video, and shows the count on every card, so the videos patients actually do come first.

  • Clinic administrators: a clinic can now run itself. The platform team creates the clinic's first administrator from the admin panel (Operations › Clinic administrators): a new administrator account, or one of the clinic's therapists. An administrator signs in on the web and gets the Clinic area: an Overview of therapists, patients, activity and sessions, where every count opens the list behind it and patients left without a therapist stand out; Therapists, where new colleagues are invited with a welcome email and a temporary password, approved, deactivated (signed out everywhere and unable to sign back in) and reactivated, and where all of a leaving therapist's patients move to a colleague in one step; Patients, showing every patient of the clinic with their care team, where a therapist can be added to a patient or taken off it (never the last one); and Administrators, where the administration is shared with another account or a therapist and taken back. A clinic always keeps at least one active administrator. Administrator accounts see no clinical content and use the web only; the mobile app tells them so.

  • A fuller sample patient for new therapists. Alex Sample now arrives with more of what the platform does, not just three weeks of sessions:
  • A movement screening recorded at home: Alex was asked to record a few movement tests, did them, and the results were reviewed and shared, with measured range of motion, the AI findings, the session report and the patient PDF. The recordings themselves are real clips the team films and uploads once in the admin area; every new sample gets a copy of their analysed result. Clinics without screening assignments see the same tests as a test session on the phone.
  • A video visit held three days ago, where the clinic has video visits: the transcript, the live notes, the AI-drafted note already saved to Alex's notes, the summary sent to Alex in Messages, and the plan changes still waiting in the plan builder. The visit's link and summary sit in the thread like a real visit's.
  • A first week that keeps going: the evening after the sample is created Alex completes the next session and flags the step-ups again, with the feedback card and the same notification a real patient's would bring; two days in Alex asks a question in Messages; later a session goes well and Alex says thank you. The follow-ups stop as soon as the therapist invites a real patient, and never run where the sample patient flag is off.
  • Two more things to try on the dashboard banner: read the visit note and see the movement screening.
  • Sample patient page in the admin area (Operations): upload the movement test recordings, watch each one being analysed (with a retake when the video is unusable), switch recordings in and out of new samples, see where the sample is switched on per clinic, and read the whole story in English or Russian.
  • OpenAI for quick AI decisions, per clinic. The small, fast AI decisions behind the HEP builder's search-as-you-type and Often paired with, the categories and look-alikes of custom exercise tags, matching guidelines to a patient, and the listener that picks which lines of a video visit are worth a note can now be answered by OpenAI's Decisions API instead of TypeSafe's Jev model. It is switched per clinic with the openaiDecisions flag (Admin → Feature Flags → AI providers), so a clinic's patient text in these features stays with OpenAI, under our agreement with it and its zero-data-retention setting. With the flag off nothing changes, and a clinic's decisions never fall back to the other provider. The AI Model Lab lists the OpenAI model next to Jev so both can be compared on real decisions.

Changed

  • Putting a Kinescope AI video into the exercise library finishes on its own (Admin). The upload to Cloudflare and the switch now run on the server: once the admin presses Use this video, the window can be closed, the studio shows the progress and says when the library plays the new video, and a video Cloudflare takes long to prepare is no longer left half-switched.
  • A switched-off account is switched off for good: an account deactivated by a clinic administrator or the platform can no longer sign in with an email code or a sign-in link, just as it couldn't with a password. A therapist or administrator who was switched off also gets no more notices about patients (messages, pain alerts, screenings), and patients no longer see them on their care team or among the therapists they can message.
  • Signing in to the app, redesigned. The welcome, email, clinic choice, password and consent screens share one calm look: a back chevron at the top, a clear title, the field with its button right under it, and problems explained next to the field instead of in pop-ups ("That password isn't right. Try again or reset it.", "No account uses this email…", "Too many attempts. Please wait a minute and try again."). The welcome screen has an EN / RU switch, the password screen shows the email and the clinic you are signing in to with a Change link back to the email, and the forgot-password sheet already has your email filled in. Back works between the steps; after signing in, Back on the home screen leaves the app instead of returning to the password.
  • The consent screen, now titled Privacy and Terms (in Russian «Согласие на обработку персональных данных»), reads as cards (what we process, why, sharing, retention, your rights), and the Privacy Policy and Terms of Service & Liability open from an Agreements card in both the US and the Russian app.
  • The app's welcome line is now "Your home exercise program, guided by your physical therapist."
  • In the clinic apps the email screen asks for "the email your clinic used to invite you", which fits therapists as well as patients.
  • In the consumer apps, "My therapist invited me" with an email no account uses now says to check the spelling or ask the therapist which address the invitation went to, instead of pointing back to "I'm New Here".
  • The sample's video visit appears on the Video visits tab of the patient window and in the visits worklist (marked Sample); starting a new visit with the sample is still not offered. On the phone, the sample's Screening Lab opens its screening to read.
  • A sample patient's recordings and screening stay the sample's: reassigning one of its tests to another patient, or asking the sample to record again, is refused.

Fixed

  • The Done button above the keyboard on the password screen only closed the keyboard. It now signs you in, and on the email screen it continues, the same as the keyboard's own key.
  • In the US app the consent screen never showed the Privacy Policy and Terms of Service links.
  • In the clinic apps, Back from the email screen, and deleting your account, led to the consumer welcome screen.
  • Tapping a notification before accepting the consent screen opened the app around it; the consent screen now comes first.
  • Starting on your own ("I'm New Here") after looking up an email that a clinic knows no longer creates the new account in that clinic.
  • On the web, mistyping the current password in Change password signed you out; it now just says the password change failed.
  • On the web consent page, Decline and a failed save showed raw text keys instead of a message.

[2026-10-07]

Added

  • Plan continuation can be switched off for a clinic. Next to AI Auto Workout Generation on the admin Feature Flags page there is now Plan Continuation, the plain version of the same job: when a patient's plan runs low, exact copies of their sessions are added on the plan's days. At most one of the two is on: turning one on turns the other off, and turning AI off hands the job to Plan Continuation. With both off, a plan ends with the sessions the therapist scheduled: nothing is added when it runs out or when a personalized video is added, editors no longer pre-fill the coming week, and missed sessions still move to the next scheduled day.

Changed

  • One shared exercise library for every clinic. The exercises that are the same everywhere (the Kinescope library and the MedBridge AI videos) are now kept once instead of being copied into every clinic. Every clinic, including one created tomorrow, sees the same exercise, and a change to its name, instructions, tags or video reaches everyone at once. For therapists and patients the exercises look and work the same: favorites, plans, templates and personalized videos carry over, and clinics can still add their own tags. Where a clinic's copy had been worded differently, the shared wording now shows; each clinic's own exercises stay its own.
  • Platform Exercise Library (Admin): a new admin page lists these shared exercises with their video source, category, tags and how many patients have each one in a plan. Admins can edit text, category, difficulty and tags, set a YouTube link or Kinescope video, upload a video or photo (clinics see a new video only once it is ready to play), take an exercise out of the library (patients who already have it keep it) and put it back, add a new shared exercise, or make one clinic's exercise shared. It replaces the old tool that copied Kinescope exercises between clinics.
  • MedBridge AI videos are added to the library as one shared exercise rather than one copy per clinic; the form no longer counts clinics.

[2026-10-06]

Added

  • An assistant beside the video call: The panel next to the video in a video visit is now the therapist's assistant for the call, with four tabs. Notes keeps the live notes, the transcript and your own notes as before. Exercises is a small exercise library for the call: search your exercises, see the patient's program, and, while the visit is being recorded, the exercises the AI picks from what is being said, each with a reason; a tap puts an exercise on screen for both of you: the patient sees its video large (playing on a loop, with you small), you see it beside the patient, until you take it off. Guidelines shows the passages that bear on the conversation, with a reason each, what the guidelines in use say about the patient's case, and a search; each passage opens in its document. Chat is an AI chat that knows the patient's record, the notes taken so far and what has been said, answers briefly as you type, and shows the guideline passages it drew on as chips; on Otera it is HIPAA-compliant, covered by our agreement with OpenAI, and the conversation is kept with the visit (it is deleted, like the live notes, if the patient takes back their agreement to the recording). The call itself sits on a lighter frame with the patient's name, the visit's minutes and the recording line in the panel's header. In the iPhone app, therapists get Exercises in the call (the same lists and search, and Take off screen), and patients see the exercise large with the therapist small; the guidelines and the chat stay on the web.
  • The patient is called when the visit starts: When you start a video visit and the patient is not in yet, their phone tells them "{Your name} is calling you. Your video visit is starting. Tap to join now.", once per visit, by push, and by text message where the patient gets texts (never by email, which is too slow for a call, and only one text when you open the visit and start it at once), on top of the invitation they got when you opened the visit. A patient who switched off video visit notices is not called. On an iPhone the call comes through a Focus mode with the next version of the app. The start sheet now says so under Tell the patient now.
  • Search today's list, and find anyone from the patient list: On the web, a search in My Active Patients also looks through your colleagues' patients (where your clinic shows all patients) and through the archived ones: matches outside your list appear under Not your patients (with Assign to Me where your clinic allows it) and Archived (opening one restores them). The search takes the name in any order, the email and phone digits. In the iPhone app, the Today tab has a search of its own, with Search all patients when nobody on today's list matches, and the patient search lists other therapists' patients and archived patients under the same headings; tapping an archived patient asks to restore them, then opens them.
  • Adding a patient starts with the email: The add-patient form, on the web and in the app, asks for the email first and checks it as soon as you leave the field. A patient who is already in your clinic shows right there, with their name, whether they are yours or whom they work with, and Open patient (or Restore and assign to me for an archived one) instead of a second invitation, and the rest of the form steps aside. Nothing shows for a new email.
  • MedBridge AI videos in the exercise library (Admin): Admins can put a finished MedBridge AI video into every clinic's exercise library with one button, ready for therapists to prescribe. The AI writes the patient instructions in our own words and picks the tags; the admin checks and edits both and is warned when the name is already in use. A better video can later replace it in every clinic at once, and the exercise can be taken out of every library again. Patients who already have it in a plan keep it.

Changed

  • Pausing an exercise in a video visit pauses it for the patient too: When you pause the exercise you are showing, with the new Pause button on it or a click on the video, the patient's video stops on the same frame, on their web page and in the app, so you can talk about that exact moment. Play continues it for both of you. Both sides see that it is paused, and a patient who joins during a pause sees the paused frame. Only the therapist pauses; the patient's video follows. In the iPhone app the therapist's pause is a round button on the exercise (or a tap on the video), with the next update of the app.
  • Video visit screens, inside and out: The lobby is now a Waiting room card (where the patient is, one Start visit) with an Invitation card beside it (when and how it was sent, the patient's link, Send invitation again, which says so when one went out less than a minute ago). The Video visits tab has filter chips with counts (All / Open / To review / Done), a search by patient, and for each open visit how far the patient got ("Maria waiting since 9:02", "Invited 3 min ago", "Not invited yet"), refreshed every half minute. The review opens on After the visit (note saved, plan updated, summary sent, each with when), shows the three steps (Recording → Transcript → Note) while the note is prepared, with the note's fields drawn as lines being written, and folds the recording upload under Upload a recording instead. The patient's page leads with "Video visit with {name}" and the clinic's name, has the agreement in its own tappable row and one big join button, shows a camera preview with a "You" chip while waiting, and says plainly what happened when a visit ended, was cancelled or its link stopped working. The patient's dashboard card looks like the other cards, says "Your therapist has opened a video visit for you." and turns green with "{name} is ready for you" when the visit starts; the patient popup's Video visits tab lists visits by date and time, with Join on an open one. In the iPhone app, with its next version, the therapist's lobby gets the same Invitation card (when the invitation went out, Send again, which says so when one went out less than a minute ago) and one Start visit, the screen after the visit shows the same three steps and says why a note could not be prepared, and the patient's screens (the introduction, waiting, ended, left) and dashboard card (a status pill and when the visit was opened) follow the same design.
  • Exercise library search: The library's search now works like the plan builder's: words in any order, plurals and a slipped letter forgiven, tags matched too, the best matches first, and "No exercises found" when nothing matches. Where your clinic has search by meaning, it runs as you type here as well, and Extended search (Enter runs it) asks the AI for more. The iPhone app's Exercises tab has the same search by meaning.

Fixed

  • Exercise videos shown during a video visit start over when they reach the end. Some played once and stopped on their last frame.
  • Some therapist-only information could be fetched with a patient's sign-in: the clinic's patient lists and, in clinics that show all patients, other patients' details and sessions. Links to patients' exercise recordings could be fetched by anyone signed in to the same clinic. Both now check who is asking: therapist-only information goes to therapists, and a recording to its patient and the therapists who treat them.

[2026-10-05]

Added

  • Live notes in video visits: While a recorded video visit is running, the important points of the conversation are written down beside the video as they are said: what the patient reports, what you measure, what you decide, and on top anything that needs your attention (a fall, new numbness). Not a transcript: short notes under the headings of the visit note, in the language you write notes in, whatever language is spoken. Click a note to see the sentences it came from, remove one that is wrong, or switch to Transcript to read the conversation itself. The notes you keep help draft the visit note afterwards, and if the recording is slow to arrive you can draft right away from the live captions. Notes are taken only while the visit is being recorded, so only with the patient's agreement; if the patient takes it back, they are deleted. On the web, your own notes are typed at the foot of the same panel, under both Notes and Transcript, so they stay in view during the call; they save as you type and only you see them.
  • Video visits inside the iPhone app: A patient who has the app joins a video visit without leaving it, from the card on their dashboard, the invitation notification or the link in Messages. The steps are the ones of the web page, the call takes the whole screen and shows the other person whole and sharp, and it keeps its sound when they glance at another app. This comes with the next version of the iPhone app; on Android and on older versions the visit opens in the browser as before.
  • Video visits from the therapist's iPhone app: Start a video visit from a patient's screen in the app and hold it right there: see when the patient is waiting, start the visit, and end it for both of you. The visit is recorded for the note under the same rules as on the web, with a line that says so and a button to stop, and Notes opens the live notes, the live transcript and your own notes over the call, where you can type while you talk. Afterwards the app tells you when the note is ready and opens it in the web app for review. iPhone only, with the next version of the app.

Changed

  • Recorded video visits need the patient's agreement to join: When the visit note is to be drafted with AI, the patient now has to agree to the audio recording before they can join: "I'm ready" stays closed until they tick the box, on the web page and in the app, and pressing it earlier points them to the box. A patient who would rather not be recorded tells you, and you cancel the visit and start one with Draft the visit note with AI switched off; that visit asks nothing and records nothing. The visit's lobby reminds you how while the patient has not agreed. Before, a patient could decline and still join, and the visit simply went unrecorded.
  • A computer's picture is shown whole on a phone: When you are on a computer, a patient who joins from their phone's browser now sees your whole picture across the screen, instead of a blown-up middle with the sides cut off. When you are on a phone too, your picture still fills theirs, like a phone call.

[2026-10-04]

Added

  • Clinician time in the mobile app: In clinics that use RTM billing, a therapist's work on a patient in the app — the patient's screen, Quick Analysis, session history and reviews (with notes), the home exercise program, assessment results and messages with that patient — now adds to the patient's monthly RTM time, the same total the web dashboard shows. Nothing to start or stop: like on the web, it runs in the background, pauses when the app is in the background or after 30 seconds without a tap, scroll or typing, and time recorded without a connection is sent when the phone is back online. Review and approval stay in the web dashboard.

Fixed

  • RTM time: the same minutes are no longer counted twice when a therapist works on the web and in the app at once, or when a send is repeated.
  • Web time tracking stops while another window is in front, and only one patient window counts at a time (a plan editor open over a patient's window counts as plan editing). Messages arriving in an open conversation no longer count as the therapist's activity. Single-workout creation, AI notes for a patient, screenings and patient conversations now count too.
  • Time that has not been sent yet stays with the therapist who did the work: after a sign-out and another therapist's sign-in on the same computer, it is not sent under the new account, and signing out no longer drops the last few seconds.
  • Each patient's monthly time follows the patient's own time zone, in the dashboard's time table too.
  • Approving a month whose total changed while the confirmation was open now asks to review the new total instead of approving the old one.

[2026-10-02]

Changed

  • Guidelines tab of the patient window, in two parts. Matched to lists the guidelines the AI follows for this patient, with what the match was based on (open cases with their day of recovery, intake answers, recent notes, medical details, body regions) and why each document applies. Other guidelines holds the rest of the library with a search box; the ones switched off for this patient and the ones about the same body region come first.
  • Dashboard on phones: the section's name is no longer repeated under the section picker, and the section's main action (Assign a screening) sits next to the picker.

[2026-10-01]

Added

  • One window per patient: clicking a patient on the dashboard opens one window with tabs for Workouts, Videos (personalized exercise videos), Screenings, Cases, Guidelines, Notes and Profile, with Edit Plan and Message at the top. On phones the tabs are picked from a list. It replaces the row that expanded under the patient and the Manage Patient window (the row's Manage Patient now opens the same window on Profile). Full screen on phones; closing with unsaved changes asks first.
  • Several cases per patient: a patient's operations and injuries are listed in Cases, each with its own date and day of recovery. Cases can be added, edited, closed (they stay in the history and stop guiding the AI), reopened and deleted.
  • Guidelines follow each case: every protocol's phases are read against the case it is about, so an ACL protocol counts from the ACL reconstruction rather than from a later ankle sprain — in the Guidelines tab and in what the AI is given, including the automatic continuation of a plan. A protocol whose case has no date is not placed in a phase, and the tab links to the missing date.

Changed

  • Guidelines for a patient: Pin / Hide are replaced by one action per document, Don't use for this patient or Use for this patient, with Undo.
  • The apps' patient summary, Quick Analysis, the daily review and notification copy show the patient's newest open case; a closed case no longer appears there.

Fixed

  • RTM time tracking: the last seconds of a session, sent as the page closes, were posted to an address that did not exist and were lost; they are now recorded.

[2026-09-30]

Added

  • Video Visits (beta): Therapists can hold a video visit with a patient without leaving the platform. Start one from the patient's row or the new Video visits tab; the patient joins from a link in any browser, with no app or account, on a page in their own language (20 languages), and is connected as soon as the therapist starts the visit. On a phone the other person fills the screen, and tapping the small picture swaps the two. If the therapist asks for it and the patient agrees to an audio recording, the visit is transcribed and AI drafts the visit note, a summary for the patient and the changes to the home exercise plan. The therapist reviews and edits everything: the note is saved to the patient's notes, the summary sent and the plan changed only when they choose to, and plan changes go through the plan builder's AI assistant as a proposal to accept. Visits can be held in any language, even two at once; the note is written in the therapist's language and the summary in the patient's. Audio is deleted once it is transcribed; the patient sees whenever the visit is being recorded, and the therapist can stop the recording at any moment. Enabled per clinic with the videoVisits flag.
  • Sample Patient for New Therapists: Therapists who join with no patients get a private, clearly labeled sample patient, Alex Sample, with three weeks of realistic history: sessions with pain and effort per exercise, a pain-7 flag in the latest session, a feedback card and therapist notes in Messages, a compliance grade and Quick Analysis, and next week's plan. A banner suggests three things to try (review the flagged session, edit the plan, reply to the feedback) and keeps Invite your first patient one tap away; once a real patient is invited it offers to remove the sample. The sample can be reset to fresh dates, removed, or brought back. It's visible only to its therapist and never contacted, billed, or counted in reports. Enabled per clinic with the samplePatient flag.
  • Plan Schedule: Every plan now has a schedule, read from the days you lay out — a Mon/Wed/Fri plan keeps going on Mondays, Wednesdays and Fridays, an every-day plan every day. There is nothing to set: the week you save is what repeats.
  • The plan continues the way you prescribed it: When a patient runs low on sessions, new ones are added on the plan's own days as copies of the current plan — each Wednesday repeats the last Wednesday, an every-day plan rotates through its days. With AI workouts on, the AI adapts those copies to how the patient is doing (dose, at most one swapped exercise per session) and never chooses the dates. If the AI is unavailable the plain copies are used, so a plan never runs dry.
  • Editors show the real future: Opening a plan for editing first fills the coming week with the sessions the plan would add anyway, so what you see is what the patient gets — and what you save is what repeats.
  • Guidelines the AI Follows: Every guideline document — a published clinical practice guideline, a post-op protocol, a clinic rule, a therapist's notes, a surgeon's letter for one patient — is read once into its key recommendations (category, strength, evidence grade, phase, page) and page-linked sections. The AI is given the statements that apply to the patient in front of you instead of raw PDFs or live web pages.
  • Guidelines for this patient in the dashboard's patient row: which documents apply and why (a condition in the record, a setting someone made, an AI match), their key recommendations with the protocol phase the patient is in marked Now from the operation date, and pin / hide for this patient. Manage Patient has a new Date of surgery or injury field next to the case, which is what the day of recovery is counted from.
  • Guidelines the AI will use in every plan editor, pre-selected the same way and refined by the notes you type. Ticking a box makes the list your exact choice; Remember keeps it for the patient or for all your patients.
  • Readable citations: AI plans and chat answers name the guidance that shaped them (document, topic, evidence grade); a chip opens the document at that statement. When the assistant declines a change because a protocol does not allow it yet, it now says why before asking what to do instead.
  • Facts the AI saves about a patient while building a plan come only from the therapist's notes: a guideline's restriction is no longer stored as if it were a fact about the patient.
  • AI settings per level (clinic, therapist, patient): Always use / Use when it matches / Never use per document; the most specific level wins. They replace the old default sets, which are migrated.
  • Curated library (US): the APTA Orthopedics clinical practice guidelines and the University of Delaware protocols, tagged by body region and condition. A clinic can switch a source off. Extracted statements wait for a clinician's approval; reviewers can approve, reject, reword and add statements, and those decisions survive a re-extraction.
  • Library search also finds passages inside documents, with the page they are on.
  • The plan's automatic continuation (AI workouts) receives the same guidance, as limits on what it may progress or swap.
  • Condition tags: new global CONDITION tags say what a patient has and what a guideline is about. They are kept out of exercise tagging, so the exercise library is unchanged.
  • AI exercise videos from MedBridge (Admin): In the MedBridge exercise browser, one click turns an exercise into an AI demonstration video performed by our own model. The AI studies the MedBridge video and writes a detailed Seedance 2.5 prompt, and Higgsfield renders the video. Results sit next to the MedBridge original for comparison. If one isn't right, edit its prompt and generate again, or describe the problem and the AI rewrites the prompt.

Changed

  • Therapist Sign-up on Clinic Sites: Therapists can create their own accounts only on the main Otera and OKTA sites. On clinic sites, the sign-up page offers patient accounts only and therapist accounts are created by the clinic's administrator; promotion pages follow the same rule. Controlled with the new doctorSelfSignup flag (on for the main sites).
  • The Otera and OKTA homepage "Try it free" buttons now open sign-up with the therapist account preselected.
  • On mobile, the doctor dashboard opens on the patient list when nobody is on today's list, and the "Add patient to today" picker offers to onboard a first patient when the therapist has none. The empty Messages screen now has therapist wording.
  • Missed sessions move to the next scheduled day, in order, instead of piling onto the following days. A Mon/Wed/Fri plan missed on Monday continues on Wednesday; "every other day" keeps its rest day after the last session actually done. The patient's card still shows the original date it was moved from.
  • Personalized exercise videos are added to the plan on its own schedule rather than on consecutive days.
  • Recording a video, or saving a plan, never brings back an exercise the clinician had removed: continuation only repeats sessions from the latest saved plan.
  • One week everywhere: the classic plan modals, the HEP Builder and the mobile Manage HEP screen all edit the same window — today through six days ahead — instead of ten days, ten sessions and seven days respectively. The schedule carries the week forward.
  • Sessions the system scheduled beyond the week you edited are dropped on save and regenerated from your new plan.
  • A new personalized video is added to every upcoming session, not just the next ten.
  • Reminders look at the day a session is currently on, so a moved session is reminded on its new day and rest days stay quiet once the patient has seen their plan.
  • A patient with no schedule who hasn't completed a session in a month is left alone: opening their plan no longer adds copies of old sessions. Their next completed session starts the plan again.
  • A session you put on a day outside the schedule (a clinic visit, say) stays there when earlier sessions are missed.
  • AI plan generation and editing no longer attach whole PDFs or force a web search per message; guidance arrives as a bounded, cited block of statements. The PDF upload cap is 60 MB.
  • A guideline that shares only a body region with the patient is suggested, not applied, unless the AI match confirms it. A condition named in the record or in your notes applies it.
  • A guideline a therapist adds is theirs by default ("Mine"); sharing it with the whole clinic is a choice.

Fixed

  • Sign-up now accepts only patient and therapist account types.
  • The next sessions were always put on back-to-back days, including weekends, whatever days the clinician had scheduled.
  • Auto-generated sessions were capped at three exercises and dropped notes, weights, targets and blocks from the prescription.
  • Plan continuation used the last completed workouts rather than the current plan, so a patient could regress to an older prescription after the clinician had progressed it.
  • Two quick completions could generate sessions twice, and an AI outage left the plan empty with no retry.
  • Reminder lookups matched the wrong day for US time zones.
  • On mobile in US time zones, the Manage HEP week could show six days instead of seven and label a day as the day before.

Removed

  • Guideline default sets, tag definitions and the content-chunk table (replaced by the AI settings, the shared tag taxonomy and sections). Existing documents are re-read automatically after the update; until a document has been read, the AI does not use it.

[2026-09-17]

Added

  • Care Team Controls in Messages: Therapists can add colleagues to any conversation with a patient, including one-on-one threads, which turn into group conversations. Each add comes with a choice: the new therapist can see the earlier messages, or only what is sent from then on. A participants panel lists everyone with their role and lets therapists remove a colleague or leave a conversation, with guardrails (the patient always stays, and the last therapist can't leave a patient's conversation). A removed therapist loses access right away.
  • Full Names Everywhere: Conversations, message previews, sender labels and contact pickers show first and last names with a Doctor/Patient label, replacing the mix of "Dr. Lastname" and first-name-only formats.
  • Load Earlier Messages: Long conversations open at the newest messages, and a button at the top loads older ones without the view jumping.
  • Direct Links to Conversations: The web address points at the open conversation, so a thread can be bookmarked or shared with a colleague who is in it.
  • Push Opens the Conversation (Mobile): Tapping a message notification on the phone opens that conversation instead of the inbox, including when the app was closed.
  • Clinical Assessment 2.0 (Mobile, requires app 2.1.0 from the app stores): Movement tests are structured instead of free text. Shoulder range of motion offers five movements (abduction, flexion, extension, external rotation, internal rotation), and All shoulder tests records both sides of all five in one camera session, ordered so the clinician moves the phone as little as possible; any step can be skipped or retaken.
  • Recording Setup Screen: Before the camera opens, a short setup page shows where to stand, where to film from, the start position, and an animated figure performing the movement from the camera's point of view.
  • Live Skeleton on Camera: While recording, the phone tracks the patient on screen. Range-of-motion tests show the tested limb with a goniometer arc and a live current/peak angle; other tests show the full skeleton. Hints say when to step back, turn the patient, or when a joint is out of view.
  • Hold-Still Countdown: Pressing Start no longer records immediately. The patient gets into position and holds still for three seconds while a 3-2-1 countdown runs, so every clip begins from a clean start position.
  • Review Before Sending: Each clip replays right after recording with its peak, tracking quality and length, and a Retake button. Nothing is uploaded until "Finish & send".
  • Measured Range of Motion: Results lead with a measured-ROM card per side (degrees, or percent for the hand-behind-back reach), how the peak was found, how much of the clip was tracked, the left/right difference, and caveats such as "joint hidden at the end of the range".
  • Watch the Video Back: The recorded clip plays in the results screen with the skeleton drawn on top, a scrub bar, and a jump-to-peak button.
  • Video Quality Check: Clips that can't be analysed reliably (nobody in frame, joints hidden, too short) come back as "Video needs a retake" with a plain reason and a one-tap retake instead of a failure.
  • Motion Tracking Settings: A gear on the assessment screen lets clinicians pick the on-device tracking model (MediaPipe, Apple Vision, or YOLO11 where supported) and try it live on camera.

Changed

  • One Thread per Group of People: Starting a conversation with people you already talk to opens the existing thread instead of creating a second one. The same rule applies when adding a colleague would recreate a group that already exists.
  • The conversation list now picks up new messages from other threads within about 15 seconds without a reload, and a hidden browser tab no longer marks messages as read.
  • Group conversations without a typed name show the participants' names instead of an automatic English title, and lines such as "Anna added Boris" are translated.
  • Membership-change lines no longer count toward unread badges.
  • Range of motion is measured in the camera plane like a goniometer; the AI report interprets those measured numbers instead of quoting its own estimate.
  • Assessment results show video-quality and AI-confidence badges, recent tests are sorted newest first, and the cross-validation section was removed from the results screen.

Fixed

  • Duplicate conversations could be created for the same two people, and a patient with no connected therapist got an error instead of a message when opening "All My Doctors".
  • Switching quickly between conversations could show one thread's messages under another's header, and the sidebar could go stale for the whole session.
  • Names could appear as "undefined" and every therapist's avatar showed "D".
  • Sending a message no longer waits for email and push delivery before confirming.
  • Security: conversations can only be started with people in your own clinic who are connected to you, read receipts can only be recorded for messages in that conversation, attachments must come from the sender's own uploads, and message endpoints validate their inputs instead of failing with server errors.
  • Unread counts are computed in one query instead of one per conversation.
  • Range-of-motion values were under-read from 3D pose data; reports now use the measured image-plane peak and never invent a degree value.
  • Running several movement tests back to back no longer starts several analyses at once, and an interrupted analysis resumes where it stopped instead of starting over.

[2026-08-20]

Added

  • Two-Tap Workouts: Finishing a session is dramatically faster on both web and mobile. Arriving at an exercise means it has already started — video playing, timer running — and one "Finish exercise" tap plus one confirmation on a single feedback screen (sets pre-selected to the plan, pain, effort, optional note) moves straight into the next exercise. Recording sessions get a single "Start recording" button per exercise, and circuit workouts are one tap per set.
  • Mark as Finished: Every session card on the patient dashboard now has a button for workouts done outside the app. One optional feedback screen — overall pain, overall effort, a note, and per-exercise details if wanted — logs the whole session, counting fully toward streaks, history, and the therapist's view. These sessions are flagged as quick completions so therapists can tell them apart.
  • Resume Where You Left Off: Workout progress now saves automatically after every exercise. Closing the app, refreshing the browser, or stepping away mid-session is safe — the session card shows "Resume · exercise N of M" and picks up exactly where the patient stopped, even on another device, with a "Start over" option. Sessions also complete themselves the moment the last exercise is finished, even if the final "Done" button is never tapped.
  • Exercise Previews Everywhere: Tapping an exercise's name or photo on the dashboard opens a clean preview — video or photo, sets and reps, the therapist's note, and instructions. This now works for every exercise, including ones without a video, and no longer accidentally starts the workout.
  • Session-Level Feedback for Therapists: Patients can rate the whole session, not just individual exercises. It appears in the same feedback card in chat with the same high-pain and high-effort alerts.
  • Stay Signed In: A rebuilt sign-in system keeps each device signed in for as long as it's used regularly (up to a year of inactivity), while letting a sign-out, password reset, or security action take effect immediately on that device. Nobody was logged out during the transition.
  • Clinic Reports: Administrators can generate a per-clinic PDF report (English and Russian) summarizing patients and platform usage.
  • MedBridge Exercise Import (Admin): The MedBridge exercise catalog can be imported into a browsable staging library that feeds the AI exercise-demo generation pipeline. Re-imports are safe and never duplicate.

Changed

  • Movement Analysis on Mobile: The clinical assessment screens (gait, range of motion, squat, balance, posture) were polished and fully translated, including Russian, with clearer recording permissions and upload progress. The profile screen gained Contact Us and Give Feedback links.

Fixed

  • The pain and effort scales on the web now go all the way to 10 — previously the highest score couldn't be selected.
  • Workout buttons on iPhones no longer float noticeably above the bottom of the screen.
  • Retrying a failed exercise-video upload now actually re-uploads the recording instead of doing nothing.
  • Completing the same workout twice (for example after a connection retry) no longer double-counts streaks.

[2026-07-29]

Added

  • Feedback Board: A public feedback board is now live at /feedback. Anyone — therapists, patients, or visitors who aren't logged in — can post feature requests and bug reports, vote posts up or down, comment on them, and attach screenshots or screen recordings (up to five files per post). Every post shows where it stands: Open, Planned, In progress, Completed, or Declined. Leave an email and tick "notify me about updates" and you'll hear back by email when the status changes or the team writes an official response. The board is shared across all clinics, so the same request from different practices lands on one thread instead of several.
  • New Plan Builder (Beta): An opt-in replacement for the plan creation and editing screens, switched on from the "New plan builder (beta)" checkbox on the doctor dashboard. Instead of filling in a day-by-day grid, you write one line per exercise — "3×10, every weekday, twice a day" — and the week fills itself in. It offers a list view, a week view with morning/afternoon lanes, and a side-by-side view on wide screens; a permanently open exercise library you can drag from; one-tap cadence presets; copy-a-day; and an AI assistant docked beside the plan that can draft changes for you to accept or reject. The existing plan builder is unchanged and remains the default.
  • Turn Off AI Auto-Generated Workouts: Clinics and individual therapists can now switch off automatic AI workout generation. When it's off, patients who run low on scheduled sessions get their recent workouts repeated instead of newly generated ones, so nothing the therapist didn't write ends up in a patient's plan. It stays on unless someone turns it off.
  • Exercise Library Copying (Admin): A new admin tool copies a clinic's video-backed exercise library into another clinic. Preview exactly what would be copied and what already exists before anything is written, and re-running it is safe — exercises already in the destination are skipped.
  • New Clinic Tenants: MetroSports, Holmy Rehab, and MedRF were onboarded with their own branding.

Changed

  • Russian Objective Test Results: On the Russian deployment, movement-analysis reports and the notifications announcing them now come back in Russian rather than English.

Fixed

  • Opening one exercise's details right after another no longer briefly shows the previous exercise's video.
  • Plans now start on today rather than tomorrow, and plan dates no longer shift by a day for users in western time zones.

[2026-06-17]

Added

  • AI Exercise Search: Therapists can now search for exercises with AI. Describe what you're looking for in plain language — like "gentle knee bend after surgery" — and the most relevant exercises are brought to the top, even when their names don't match your words. It works both in the Exercise Library and in the exercise picker when building or editing a plan, and runs alongside the existing instant search. Only exercises that have a demo video or photo are suggested, so a match is ready to drop straight into a plan.
  • Exercise Generation (Admin): A new admin tool creates animated exercise demonstrations with AI. Starting from a character or limb template plus a short description and optional example photos, it generates a short looping demo that can be refined in a back-and-forth chat and then saved into the exercise library.

[2026-06-15]

Added

  • Reset Your Password: Patients and therapists can now reset a forgotten password themselves from the login screen. Enter your account email, follow the link in the reset email (valid for one hour), and choose a new password. For security, resetting your password signs you out of any other active sessions, and the reset email arrives in English or Russian to match your account language.
  • Multiple Sessions Per Day: Therapists can schedule more than one workout session on the same day within a plan — for example a morning mobility routine and an evening strengthening block — up to three sessions per day. Each session is independently named and can be reordered or removed, in both new-patient plan creation and the edit-plan flow. Enabled per clinic.
  • SMS Text Messaging Consent Page: A new public /sms-consent page documents the kinds of text messages Otera Health sends, the consent terms, message frequency and rates, and how to opt out (reply STOP) or get help (reply HELP).
  • New Clinic Tenants: Dartmouth Athletics, Ivy Rehab, Upstream, and SFL Clinic were onboarded with their own branding.

Changed

  • In-Clinic Patients & Daily Review: The admin In-Clinic Patients page now manages a persistent, per-therapist patient roster — the same list that appears in the mobile doctor dashboard's "Today's Patients" section — alongside the Daily Review PDF, in one dual-tab workflow. A one-click Clear all button resets a therapist's roster for the day.
  • Russian Wording & Loading Skeletons: Russian app text was reframed toward fitness and wellness terminology, and patient list pages now show loading skeletons to prevent layout shift while data loads.

[2026-05-28]

Added

  • Calendar OCR Import (Admin In-Clinic Patients): The /admin/in-clinic-patients page now supports importing patients from a calendar screenshot, reusing the Daily Review flow. After selecting a therapist, upload or drag-and-drop a screenshot of their Google Calendar from the "Eligible Patients" panel; the system uses GPT-4.1-mini to extract patient names and matches them — scoped to that therapist's eligible patients — with exact and fuzzy matching. Matched patients are added to the in-clinic selection and persisted with the existing Save button. Calendar names that aren't on the therapist's eligible list are ignored, since only accessible patients can be added. New endpoint: POST /v2/admin/in-clinic-patients/ocr-import.

[2026-05-26]

Added

  • Group Messaging (Web): Therapists can now create group conversations with multiple participants from the messages page. A new multi-select participant picker lets doctors search for other therapists in their tenant and add them to a named group thread. Existing one-on-one conversations show an "Add participant" button to invite additional therapists. Gated by the multiProviderGroupMessaging tenant feature flag.
  • Calendar OCR Import (Admin Daily Review): The /admin/daily-review page now has an "Import from Calendar" button. Upload or drag-and-drop a screenshot of a Google Calendar showing patient appointments, and the system uses GPT-4.1-mini to extract patient names, then matches them against the tenant's patient list using exact and fuzzy matching. Matched patients are pre-selected for the daily review; unmatched names (external patients not yet in the system) can optionally be included for reference.

Changed

  • Personalized Video Prescription Suggestions: Prescription values for personalized exercise videos are now generated via a dedicated async suggestion service. When a doctor selects a patient and exercise during the video recording flow, the mobile app prefetches a prescription suggestion in the background. The suggestion resolves through a three-tier fallback: AI analysis of the patient's exercise history and condition (via GPT-4.1-mini), most recent historical prescription for the exercise, or conservative defaults (3 sets × 10 reps). Results are cached in Redis for 10 minutes. Two new API endpoints support the flow: POST /v2/personalized-exercise-videos/prescription-suggestions (start) and GET /v2/personalized-exercise-videos/prescription-suggestions/:id (poll).
    • The doctor-facing video list now shows processing-state videos (created, uploading, queued, failed) alongside completed ones, so therapists can track uploads without leaving the patient detail screen

Fixed

  • Personalized Video Injection Reliability: Refactored the injection service to be more resilient when injecting exercises into patient HEPs, with improved idempotency checks and cleaner separation between prescription resolution and workout injection.

[2026-05-20]

Added

  • Mobile Doctor Dashboard Redesign: Rebuilt the mobile doctor home around a patient list with at-a-glance compliance grades (A+ → F), a "My patients" vs "All patients" toggle, a "Seeing today" pinned section, tenant-wide search, a dedicated patient detail screen, and a new Quick Analysis view that surfaces flags, suggested clinical notes, the patient's upcoming session, and their last completed session with elevated pain/exertion highlighted.
    • Compliance grades and activity stats come from the same backend service that powers the admin Daily Review tool
    • Each patient row shows a grade chip, last-visit chip with a stale indicator after 14 days, and flag chips for elevated pain/exertion, long inactivity, excessive exercises, and never-started states
    • Action grid on the patient detail screen exposes Start Test, Record Exercise Video, Manage HEP, and View Videos — each gated by its tenant feature flag
    • Two Section Info popovers explain what movement tests and personalized videos are, useful for therapists trying these features for the first time
  • Daily Review (Admin): New /admin/daily-review admin tool. Pick a tenant, therapist, date, and set of patients on that therapist's caseload, then download a multi-page printable PDF briefing. Each patient page shows compliance grade with reason, 7/14/30-day session counts, AI-style suggested talking points, the upcoming session's exercises (with personalized videos marked), and the last completed session's exercises with elevated pain/exertion flagged. Gated to admin users only.
  • Patient Re-onboarding (Mobile): When a patient was invited but never finished signing up, the patient detail screen now shows a one-tap Re-onboard patient flow. Choose to send the invite email, copy a fresh magic link, or display a QR code for in-clinic scanning. Generating a new link invalidates any prior token for that patient. If the patient has no date of birth on file, the modal collects it first.
  • Personalized Video Library Picker (Mobile): When recording a personalized exercise video, doctors can now tap Choose from Library to pick an existing clip from their phone instead of recording a new one. Library videos longer than two minutes are rejected up front. Exercise search now lists the full library by default — no need to type to see what's there.

Changed

  • Doctor Patient Summary API: /doctor patient-list endpoints now return per-patient compliance grade, activity stats, last completed date, and next upcoming session inline (developer-facing). Reuses the shared gradeFromActivity and getPatientSummaryStats helpers extracted from the Daily Review service.
  • Invite Token Hashing: Patient invite and QR-code tokens now use SHA-256 + indexed unique lookup instead of bcrypt + loop-and-compare. The raw tokens are already 256 bits of entropy from crypto.randomBytes, so bcrypt's slowness bought nothing and would block indexed lookup. Pre-2026-05-14 tokens are invalidated; the welcome and confirm pages now surface a clear migration message asking patients to request a fresh invite from their therapist.
  • Personalized Video Storage Layout: Personalized exercise videos now save to region/env/tenant-scoped paths in both S3 and Cloudflare (personalized-video/{region}/{env}/tenant-{id}/video-{videoId}-{uuid}.mp4 in S3) for clearer ops visibility and per-environment isolation. Pre-existing videos keep their old paths — the change is forward-only.
  • Mobile SDK Upgrade + Performance: Expo and React Native dependencies bumped to the latest stable; eslint config migrated to flat config; assorted performance and stability passes across the doctor dashboard, patient onboarding modal, and video flows.

Fixed

  • Web Logout: Reworked the auth-state handling so logout reliably clears the session state, refresh cookies, and any in-memory tokens. Adds shared cookie and route helpers used by the header, login page, and HTTP client.
  • Onboarding Migration Copy: The /onboarding/welcome and /onboarding/confirm pages now explain the May 14 invite-system upgrade when an older link fails, instead of showing the generic "Invalid Link" message.
  • Personalized Video Upload Reliability: Reworked the mobile video upload pipeline to use a shared signed-URL helper with consistent retries and progress reporting, and added new backend tests around upload completion and storage naming.

[2026-05-13]

Added

  • Patient Dashboard Refresh (Web): Reworked the patient dashboard streak display. The daily streak number now lives inside the 7-day row as its own column, and rest days vs. completed days use distinct blue/green colors with red for over-limit misses. A new card below the streak prompts patients to install the mobile app with a one-tap link (auto-detects iOS, Android, or desktop). The headline switches to a streak-aware message once the patient is 2+ days into a streak.

Changed

  • Anonymous Exercise Video Access: The exercise detail route now returns video sources for unauthenticated requests, so shareable exercise links no longer require a login to play the demo video.
  • Guidelines UI Polish: Library collections are now collapsed by default in the doctor view, and the generation picker modal opens automatically when adding context to a plan.
  • Admin Nav Cleanup: Removed the unused "New Patients" tab from the admin navigation menu.

Fixed

  • Exercise Thumbnails: Fixed an intermittent issue where exercise thumbnails could fail to render after plan generation.

[2026-05-11]

Fixed

  • Exercise Drag-and-Drop Reordering: Fixed an issue where dragging an exercise within a workout could leave the order out of sync between the UI and the saved plan.
  • Smart Notifications — Minor Admin Fixes: Smaller observatory and notification-management polish in the admin area.

[2026-05-08]

Fixed

  • Smart Notifications — Patient Overrides Tenant Scoping: Per-patient overrides now correctly pass the patient's tenant when looking up policy, preventing overrides from being read against the wrong tenant policy in multi-tenant admin sessions.

[2026-05-06]

Added

  • New Clinic Tenants: Added Ivy Rehab and Upstream Rehabilitation as platform tenants with brand configurations and logos.

[2026-05-04]

Added

  • Email Campaigns (Admin): New /admin/email-campaigns page for sending targeted markdown email blasts via SendGrid. Build a recipient list from tenant filters + user-type + presets (therapists with no patients, recent therapists with no patients, therapists with no active patients, patients inactive for N days, patients with no therapist), deselect individuals, or import a CSV of emails with add/only/intersect blending. Compose in English or Russian, preview, send a test, then send to the full list with 2-second per-recipient throttling. Distinct from Feature Announcements (broadcast to all therapists) and Notification Management (transactional sends).
  • Guidelines: 2-Level Hierarchy & Delaware Import Script: Guidelines now support a parent-child hierarchy — a Collection guideline can group its child Link, PDF, and Note guidelines (one level deep). Added scripts/importUniversityDelawareGuidelines.ts as a worked example of bulk ingestion, seeding the company-wide library with University of Delaware PT guidelines grouped by body region.

Changed

  • Guidelines Admin Polish: Several bug fixes in the admin area around editing, tagging, and tenant defaults. Updated the default From-address for admin-originated emails.

[2026-05-03]

Added

  • Guidelines System: Doctors and admins can now store, organize, and retrieve clinical reference materials — links, uploaded PDFs, markdown notes, and collections. Guidelines are scoped by visibility (company-wide, tenant, physician, or patient-specific) and categorized with a hierarchical tag taxonomy supporting translations. Uploaded content is automatically chunked for AI consumption, enabling the AI assistant to cite relevant clinical guidelines when generating plans.
  • PDFs (up to 25 MB) are uploaded directly to object storage via presigned URLs; links are fetched and extracted server-side with SSRF protection
  • AI-visible guidelines are served to the plan generator as structured chunks with source citations
  • Doctors can save default guideline selections at the patient, physician, or clinic level — defaults cascade (patient → physician → tenant) and are pre-selected during plan generation
  • Tag definitions support translations and parent-child hierarchies
  • Gated by the guidelines tenant feature flag
  • Personalized Exercise Filter (Mobile): The mobile exercise picker now includes a "Personalized" segment that filters to exercises the therapist has already recorded a personalized video for the selected patient. Complements the existing All Exercises, My Private, and Favorites segments.

Changed

  • Mobile Video Handling Refactor: Unified exercise video handling across all video providers (Cloudflare Stream, Kinescope, YouTube, S3) into a priority-based source selection system. The mobile app now uses a structured ExerciseMedia type with videoSources and photoSource arrays instead of checking individual provider fields, improving consistency and making it easier to add new video sources.

[2026-04-29]

Added

  • Promotion Campaigns: New tenant-scoped promotional campaigns. Admins can create branded partner campaigns at /admin/promotions — set a campaign slug, landing/success copy, partner display name, free-months reward, and one or many promo codes (single-add or bulk import). Therapists visit /therapist-promo/<slug> (on the tenant's domain), enter a code, and either sign up with the reward applied automatically or — if already registered — log in and add the promotion from their profile. Each campaign has a built-in analytics dashboard tracking signups per day, patients invited and consented, workouts scheduled and completed, with a per-therapist breakdown.
    • Codes have optional max-redemption caps and active windows; redemption uses serializable database transactions so caps cannot be exceeded by concurrent redeems
    • Three redemption sources are tracked: SIGNUP (code entered on signup form), CAMPAIGN_PAGE (code validated on the partner landing page first, then signup), and PROFILE (existing therapist applies code from their profile)
    • Gated by the promoCodeCapture tenant feature flag
  • Admin User CSV Export: New "Export to CSV" button on /admin/user-management. Filter by one or more tenants and one or more user types (or leave empty for all), then download a 20-column CSV including names, contact info, account status, GDPR consent state, last device platform, and connection counts. Output is RFC 4180–compliant with a UTF-8 BOM so Excel reads Cyrillic names correctly.

Changed

  • Doctor Auto-Approval at Signup: New doctor accounts are now approved immediately at signup instead of requiring a manual admin approval step. Therapists can log in and start working as soon as they finish registration. The admin approval toggle on /admin/user-management is preserved and now functions as a revoke control for cases where an account needs to be disabled.

[2026-04-27]

Added

  • Personalized Exercise Filter (Web): When a therapist opens the exercise picker from a patient-scoped flow, the picker now shows pill-style scope buttons with a new "Personalized" option that filters to exercises the therapist has already recorded a personalized video for that patient. The other scopes ("All Exercises", "My Exercises", "Favorites") replace the old folder dropdown. Mirrors the existing mobile picker behavior.
  • Plan Creation Thumbnails: Exercise thumbnails now render throughout the AI plan generation flow — initial plan creation modal, edit plan modal, day workout preview, plan comparison view, and the selected-exercise card list. AI-generated exercises previously arrived without media data, so the picker now hydrates them on the fly and the therapist sees the same thumbnails before, during, and after AI suggestions are applied.

Changed

  • Exercise Media Architecture (developer-facing): Consolidated exercise media handling into a shared module across API, mobile, and web. The API now returns a structured media object on exercise responses (videoSources[] + photoSource) alongside the existing flat fields for backward compatibility. Adds first-class support for therapist-uploaded s3 videos in the priority chain, signed-URL caching, and a new scripts/auditExerciseMedia.ts audit tool. No user-visible behavior change. See Exercise Media Type Refactor for the full breakdown.

[2026-04-20]

Changed

  • Workout Details — Exercise Media: The therapist's workout details modal now displays personalized exercise videos and uploaded exercise media inline. Previously, personalized videos only appeared during patient workout playback; therapists can now review them when examining any completed session.

Fixed

  • Doctor–Patient Authorization on Legacy Routes: Legacy workout routes now enforce doctor–patient access verification, ensuring doctors can only view workout data for patients they are connected to.

Added

  • New Clinic Tenants: Added HSS and Synergy Health & Wellness as platform tenants with brand configurations and logos.
  • HIPAA Compliance FAQ: Added a HIPAA compliance question to the Otera Health homepage FAQ (bilingual English/Russian).

[2026-04-14]

Fixed

  • Welcome Email & Reminder Links: Therapist welcome emails and daily workout reminder CTAs on tenants whose stored domain was missing an https:// prefix previously produced broken login links. Tenant domains are now normalized through a single shared helper before email send, so the CTA always points at a valid URL. The normalizer also rejects non-http URL schemes (ftp:, mailto:, javascript:), closing a small scheme-injection surface on tenant-configured domains.

[2026-04-13]

Changed

  • Marketing Homepage Redesign: / is now brand-aware. Each deployment resolves to one of three homepages based on its build: a full Otera Health clinic-buyer site, a Russian-market OKTA Health variant, or a minimal tenant-branded login gateway for the 12 custom-tenant clinics. Custom-tenant deployments auto-detect their parent marketing brand (Otera or OKTA) from the runtime hostname, so the "Learn more" link always points back to the right marketing site.
  • The original patient-first landing page is preserved verbatim at /patients so SEO traffic and patient-intent visitors still have a home.
  • Both / and /patients are public routes — no login required.

[2026-04-09]

Added

  • Patient–Therapist Feedback Loop: Patients and therapists now exchange structured workout feedback inside the existing conversation thread.
  • When a patient finishes a workout with any flagged exercises (pain ≥ 7, exertion ≥ 9, or written comments), a Patient Feedback Summary card is automatically posted to the conversation with each connected therapist, listing the flagged exercises with pain/exertion badges and any patient comments. Therapists receive a push notification.
  • Therapists can open a new Session Viewer screen (mobile) or session detail modal (web) to review the patient's workout exercise-by-exercise and leave post-exercise notes (up to 1000 characters per exercise). After a 5-minute coalescing window, all notes for that session are bundled into a single Therapist Notes card posted back to the conversation, and the patient receives a single push notification.
  • Note editing is currently mobile-only; web users can review sessions but not edit notes inline.
  • Available on web and mobile, gated by the feedbackNotifications tenant feature flag.

[2026-04-08]

Added

  • App Entrance Tracking: The platform now detects when patients open the app without completing a workout. After a 2-hour window, if no real workout was logged that day, an inferred workout is created from the patient's current exercise plan. Therapists see an "App Entrance" badge on these sessions in the workout table; patients see an "App Visit" badge in their workout history.
  • If the patient completes a real workout before the window expires, the entrance is automatically canceled
  • Re-opening the app extends the 2-hour window
  • Inferred workouts count toward streaks and RTM billing
  • Available on both web and mobile
  • Gated by the appEntranceTracking tenant feature flag

[2026-04-07]

Added

  • Circuit Workout Mode: Patients can now choose between "Regular" and "Circuit" playback modes before starting a workout. Regular mode completes all sets of each exercise before moving to the next. Circuit mode rotates through exercises one set at a time within each block (Warm Up, Main Session, etc.), similar to a gym circuit training format. The option appears automatically when a workout block contains two or more exercises.
  • Available on both web and mobile
  • In circuit mode, intermediate sets auto-advance to the next exercise without showing the feedback modal; feedback is collected only on the final set of each exercise
  • Exercise list is locked (no manual reordering) while in circuit mode

Changed

  • Admin Workout Stats — Contact Info: The Done Workouts Stats admin table now displays patient email and phone number in a dedicated Contact column.

[2026-04-06]

Added

  • Rich Daily Reminder Emails: Daily workout reminder emails now include the full exercise list with sets, reps, and duration for each exercise, AI-generated anatomical benefit summaries explaining how the workout connects to the patient's condition, and per-exercise form and activation cues. Uses the patient's next incomplete workout, last 3 completed workouts, and injury context to generate personalized content via GPT. Emails are bilingual (English/Russian) with a branded "Start Your Workout" CTA button linking to the patient's tenant domain.
  • Rich content is generated at send time (not pre-cached) for freshness
  • If AI generation fails, falls back to the existing basic email template
  • Deep Link Landing Page: New /start-workout web page that notification email CTAs can link to. On iOS, the URL triggers a Universal Link that opens the app directly when installed. On desktop or when the app is not installed, the page recommends the mobile app with platform-specific download links and a "Continue to Login" fallback. Supports ?email= query parameter for login pre-fill.

Changed

  • Notification Email CTA URLs: Email notifications now resolve tenant-specific domains dynamically via CtaUrlService, replacing hardcoded domain references. CTA URLs include email pre-fill for frictionless login.

[2026-04-05]

Added

  • Notification Observatory: Admin tool for real-time observation of notification dispatch decisions. Browse all patient notification profiles with filtering by engagement segment and mode, and forecast upcoming notification opportunities for any patient — showing the full 13-point anti-annoyance filter evaluation, channel selection, cached content status, and celebration potential.
  • Admin Scripts: Admin page for running one-off maintenance scripts. Currently supports an apology email script: identify patients who received erroneous notifications within a configurable time window, preview affected users, selectively exclude individuals, and send branded bilingual apology emails via SendGrid.
  • Personalized Exercise Auto-Injection: When a therapist records a personalized exercise video, the exercise is now automatically added to the patient's upcoming workouts with AI-generated prescription defaults (sets, reps, duration). Uses GPT to analyze patient history and exercise characteristics, with fallback to conservative defaults if AI is unavailable.

[2026-04-02]

Added

  • Smart Notifications: AI-powered notification engine that sends personalized workout reminders and celebration messages to patients via push and email. The system classifies patients into 6 engagement segments (Never Started, Early, Building, Streaking, Lapsing, Dormant), computes optimal send times by learning each patient's workout habits, and generates personalized content using GPT-4 with handwritten template fallback.
  • Anti-annoyance safeguards: 13-point checklist filters every notification — checks quiet hours, daily/weekly caps, minimum gap, workout completion status, and more
  • Post-workout celebrations: Automatic congratulatory notifications after workout completion, with special messages for streak milestones (5, 10, 25, 50, 100, 200, 365 days)
  • Patient controls (mobile): Patients can configure timing mode (Off, Fixed Time, Smart), intensity (Minimal, Normal, Motivational), quiet hours, and per-type toggles from the mobile app
  • Admin tools (web): Policy management per clinic, per-patient overrides with pause/unpause, notification testing with content preview, and suppression analytics dashboard
  • Push notification infrastructure: Mobile device token registration via Expo Notifications, channel-aware delivery (push-first for active users, email-first for new patients)
  • Gated by the smartNotifications tenant feature flag

Fixed

  • Various stability and timezone fixes across admin panel and notification delivery

[2026-03-30]

Added

  • Patient Exercise History & Video Library: Patients can now browse their complete exercise history and view personalized videos recorded by their therapist. The Past Workouts page adds an "Exercises" tab (when personalized videos are enabled) with two sub-tabs: "Personalized" shows doctor-recorded demonstration videos, and "All Exercises" shows every exercise the patient has completed with set counts and completion dates. Videos play in a full-screen modal.
  • Available on web, mobile, and via new API endpoints (GET /v2/exercises/my-history, GET /v2/personalized-exercise-videos/my-videos)

[2026-03-26]

Added

  • Admin Panel — Patient-Therapist Assignments: Admins can now assign patients to therapists from any tenant directly in the admin area. A two-column picker lets admins search and select a patient and therapist within a tenant, then confirm the assignment.

[2026-03-24]

Fixed

  • Mobile Reduce Motion Accessibility: Animations in the AI onboarding flow and workout feedback modal now respect the device's "Reduce Motion" accessibility setting, preventing motion-triggered discomfort for sensitive users.

[2026-03-19]

Added

  • Admin Panel — Therapist Onboarding: Admins can now bulk-onboard therapists via manual entry or CSV upload directly from the admin area. Each invite includes a customizable branded welcome email with an auto-generated password. Supports single or batch therapist creation with real-time validation and a test-email preview.
  • Doctor Patient Onboarding API: Backend support for doctor-initiated patient invites, supplementing the existing mobile onboarding flow.

[2026-03-18]

Added

  • HEP Prescription Notes & Tolerances: Doctors can now set pain tolerance, exertion tolerance, and add clinical notes per exercise when prescribing HEP dosages from the mobile app.
  • Mobile HEP Unsaved Changes Guard: The HEP editor now warns doctors before navigating away with unsaved changes, showing a summary of pending edits with options to save, discard, or cancel. The swipe-back gesture is disabled while edits are in progress.

Fixed

  • Exercise Prescription Saving: Prescribed pain tolerance, exertion tolerance, and exercise notes now persist correctly when saving HEP plans.

[2026-03-17]

Added

  • Admin Panel — Feature Announcements: Admins can now compose and send feature update emails to therapists directly from the admin area. Announcements support markdown formatting with a live preview, locale selection (English/Russian), and can be pre-filled from existing documentation templates. Includes a confirmation step and rate-limited delivery via SendGrid.

[2026-03-16]

Added

  • Admin Panel — User Management: Admins can now view, search, filter, and delete users across all tenants from a dedicated management page. Doctor accounts can be approved or unapproved via toggle switches. Includes sortable columns and a safety confirmation modal for deletions.
  • Admin Panel — Create Admin: Admins can create new admin accounts directly from the admin area with email and password.
  • Admin Panel — Feature Flags UI: Admins can now toggle per-tenant feature flags from a visual dashboard instead of updating the database directly.
  • Admin Panel — Access Guardrails: Admin routes are now protected by centralized middleware on both frontend and backend, replacing per-controller authorization checks.
  • Knosis PT Tenant: Added Knosis PT as a new clinic tenant with custom branding and logo.

Fixed

  • Mobile HEP Session Loading: The doctor's HEP management view now automatically reschedules overdue patient workouts before displaying sessions, preventing stale past-dated workouts from appearing. Default session window increased from 5 to 10 days.

[2026-03-15]

Added

  • Mobile HEP Management: Doctors can now view and edit patient home exercise plans directly from the mobile app. Plans are organized by session (day), with inline dosage editing for sets, reps, duration, and weight. An AI composer lets doctors describe changes in natural language and preview AI-suggested modifications before applying them.
  • Gated by the therapistMobileHepManagement tenant feature flag

Fixed

  • Doctor Messages: Fixed an issue with doctor message delivery on mobile.

[2026-03-13]

Added

  • Mobile Exercise Management: Doctors can now browse, search, filter, create, edit, and delete exercises directly from the mobile app. The new Exercises tab includes tag-based filtering with AND/OR mode, segment views (All Exercises, My Private, Favorites), video and photo capture via device camera, and favorite toggling with haptic feedback.
  • Gated by the therapistExerciseManagement tenant feature flag

[2026-03-12]

Changed

  • API Modular Architecture: Refactored the backend from a monolithic entry point into a modular structure with a createApp() factory, dedicated database client module, and singleton service management. Legacy routes (5700+ lines) are extracted to a separate module. External client modules (OpenAI, S3, Telegram) use lazy-initialized singletons. CORS origins are now configurable via environment variable.

Added

  • API Test Infrastructure: Added Jest-based test suite with Prisma mocking, supertest helpers, JWT token generation for authenticated tests, and fixture data. Initial test coverage includes auth middleware, tenant middleware, messages, user authentication, and workouts.

[2026-03-09]

Added

  • Doctor Mobile Patient Onboarding: Doctors can now invite and onboard new patients directly from the mobile app. The onboarding form collects name, email, and date of birth, with optional therapist assignment when the feature is enabled. After sending the invite, doctors can generate a QR code for in-clinic patients or share the invite link.

[2026-03-04]

Changed

  • Mobile Onboarding Polish: Improved the mobile AI workout builder onboarding flow with tenant-themed colors, animated input focus states, haptic feedback on back buttons, redesigned plan preview cards with day badges, a loading spinner during AI analysis, and styled follow-up question cards. Also moved several hardcoded strings to translation files.

[2026-03-03]

Added

  • RTM Time-Based Billing in Dashboard: Time-based billing codes (98979, 98980, 98981) now appear alongside workout-based codes in the unified Billable Codes table. The billing store fetches both tracks in parallel, and status updates for time records automatically sync across all related codes for the same patient and month.
  • Streak Recalculation Script: New admin tool (npm run recalculate-streaks) that replays all patients' full workout history to recompute streak values. Runs in dry-run mode by default; pass --apply to write changes. Processes users in batches and reports a detailed before/after diff.

Fixed

  • Streak Week-Transition Logic: Fixed a bug where the streak evaluation could double-process a week boundary crossing, potentially breaking streaks that should have survived. Also fixed a case where exceeding rest days in the current week (after a valid week transition) wasn't properly detected.

[2026-03-02]

Changed

  • Mobile AI Onboarding Experience: The AI-powered patient intake flow on mobile now shows real-time visual progress as the AI processes responses and generates workout plans. Instead of raw streaming text, patients see an animated stage checklist (analyzing, evaluating, building synopsis, generating plan), rotating contextual tips, and content sections — synopsis, plan overview, goals, and individual workouts — that appear progressively as they're generated.
  • Plan sections stream in as partial data, so patients can start reading the synopsis while workouts are still being built
  • Follow-up questions appear individually as they become ready, rather than all at once when generation completes

[2026-02-27]

Added

  • Personalized Exercise Videos: Doctors can now record custom exercise demonstration videos for individual patients from the mobile app. Select a patient, search for an exercise, and record up to 2 minutes of video. The personalized video automatically replaces the default exercise video in that patient's workout playback once processing completes.
  • Videos are uploaded to S3 and transcoded to Cloudflare Stream in the background
  • When a newer video is recorded for the same patient and exercise, the previous one is automatically deactivated
  • Gated by the therapistPersonalizedExerciseVideo tenant feature flag
  • Exercise Auto-Canonicalization: When a therapist creates a new exercise, the system automatically checks for duplicates using both exact name matching and AI-powered fuzzy matching. Duplicate exercises are merged transparently -- all workout references, tags, favorites, templates, and personalized videos are repointed to the canonical exercise.
  • Stage 1: fast exact match on normalized name (lowercase, trimmed, collapsed whitespace)
  • Stage 2: AI fuzzy match (gpt-4.1-mini) for near-duplicates like abbreviations, plurals, and word order variations, with a 93% confidence threshold
  • Full audit trail of all merge and skip decisions
  • Gated by the exerciseAutoCanonicalization tenant feature flag
  • Doctor "Manage" Tab (Mobile): Doctors now see a dedicated "Manage" tab in the mobile app for quick access to recently completed clinical assessments with patient name badges.
  • In-Clinic Patient Management (Mobile): Doctors can add patients to a session-persistent "in-clinic" list on their dashboard. Each patient card provides quick actions to start a clinical assessment or record a personalized exercise video.

Changed

  • Mobile App Consolidation: The separate "Clinics" mobile apps (Okta Health Clinics, Otera Health Clinics) have been deprecated. All app store links and redirect pages now point to the main Okta Health and Otera Health apps. Old clinic-specific pages (/mobile-oktaclinics, /mobile-oteraclinics) automatically redirect to the consolidated pages.
  • Mobile Feature Flags: The mobile app now fetches per-tenant feature flags from the server on authentication and when returning to the foreground, enabling conditional feature visibility (e.g., personalized video recording) without requiring an app update.

[2026-02-23]

Added

  • Clinical Assessment Patient Assignment: Doctors can now assign completed clinical assessments to specific patients for record-keeping. An "Assign to Patient" button on the results screen opens a searchable patient picker; the assigned patient's name then appears on assessment cards in the dashboard and recent tests list. Supports reassignment and unassignment.
  • Clinics with the "All Active Patients" feature enabled see all organization patients in the picker; otherwise only the doctor's directly connected patients appear

Changed

  • Exercise Query Consolidation: Centralized exercise visibility logic into a shared helper, ensuring consistent filtering (active + public-or-owner) across all exercise-related endpoints.
  • Mobile Workout Experience: Reworked the mobile workout screens with loading skeletons, smoother video loading for Kinescope exercises, animated progress bars, redesigned feedback modal, and various Android layout fixes.
  • Video player now shows a thumbnail placeholder while loading for all video sources (Kinescope, Cloudflare, YouTube)
  • Exercise list and feedback modals converted from RN Modal to inline overlays to fix Android WebView/Camera layering issues
  • Extracted shared workout styles into a dedicated styles module

Fixed

  • Mobile AI Workout Plans: Mobile app AI workout plan endpoints now return exercises from the user's own clinic instead of always querying the default tenant. Previously, non-default-tenant users could receive empty or incorrect exercise lists.

[2026-02-19]

Added

  • Mobile Role Separation: The mobile app now routes patients and doctors through separate screen flows with access control. Patients see workouts, plan management, and messaging; doctors see clinical assessment tools. A RoleGuard component prevents cross-role navigation, and a new shared HTTP client replaces duplicated auth/fetch logic across all services.

Changed

  • Streak Calculations: Streak logic now uses the patient's device timezone for all date comparisons, preventing issues where late-night workouts could register on the wrong calendar day.
  • Streak Days Off: Users can now take up to 3 rest days per week (Mon–Sun) without breaking their daily streak. A 4th missed day in a week breaks the streak. Users who start a new streak mid-week only have days counted from their first workout onward.
  • The weekly day calendar now shows rest days in blue (allowed) and missed days in red (exceeded limit), instead of marking all missed days as red.
  • A "rest days remaining" indicator appears below the weekly calendar on both mobile and web.
  • The web dashboard now syncs the user's timezone on every visit, matching the mobile app's existing behavior.
  • Mobile Navigation: Redesigned the mobile tab bar with a floating pill-shaped design, per-tab accent colors, animated indicators, and a compact streak widget in the dashboard header showing daily streak count and a weekly calendar.

[2026-02-16]

Added

  • Clinical Video Assessment (Doctor): Doctors can now record patient movement videos and receive AI-powered clinical analysis. The doctor describes the test, records up to 2 minutes of video, and the system processes it through a multi-stage pipeline: frame extraction, MediaPipe pose estimation with skeleton overlays, biomechanical metric derivation, and a 3-pass GPT analysis (visual, biomechanical, cross-validation). Results include an overall assessment, key findings, recommendations, and a scrollable gallery of pose overlay frames.
  • Doctor-Specific Mobile Dashboard: Doctors now see a simplified mobile dashboard with just a "Start Test" button and access to the Profile tab. Patient-oriented tabs (Messages, History) and workout UI are hidden for the doctor role.
  • Clinical Video Processing Service: New Python/FastAPI microservice (clinical-video-service) that handles video frame extraction, MediaPipe Pose landmark detection, skeleton overlay generation, and joint angle metric derivation. Runs in Docker on port 8000.

[2026-02-15]

Added

  • AI Plan Generation — File Attachments: Therapists can now attach images and PDF files alongside their clinical notes when generating AI workout plans. Attached files are sent to the AI model for analysis, enabling richer context for plan generation.
  • AI Plan Generation — Assistant Side Panel: After an AI plan is generated, therapists can open a side panel to refine the plan through conversation. Ask the AI to adjust exercises, change difficulty, or modify the plan, and review proposed changes in a comparison view before accepting.
  • AI Plan Generation — Drag-and-Drop Attachments: Therapists can now drag and drop files directly onto the notes input area instead of using the attach button.
  • AI Plan Editing — Chat File Attachments: Therapists can now attach files directly in the AI assistant chat when refining a plan. Attach a new MRI scan or updated referral mid-conversation via the paperclip button or by dragging files onto the chat panel, and the AI will incorporate the new context into its suggestions.

Changed

  • AI Plan Generation — Loading Experience: Replaced the streaming text display with a skeleton card UI that shows day cards appearing progressively as the AI generates each workout, providing a clearer sense of progress.

[2026-02-13]

Changed

  • RTM Billing Dates: Bill dates for workout-based and time-based RTM codes now land on the first Sunday on or after the billing period ends, since RTM codes (except 98975) cannot be billed on service days.
  • Workout codes (98985/98977): bill date is the first Sunday on or after the 30-day window end
  • Time codes (98979/98980/98981): new bill date field set to the first Sunday on or after the calendar month end

[2026-02-12]

Added

  • All Active Patients Dashboard: Therapists can now view all active patients across their entire clinic in a dedicated sub-tab on the doctor dashboard. This feature is controlled per clinic via feature flag.
  • Therapist-Patient Assignment: Therapists can now assign patients to other therapists within the same clinic. Available from the "All Active Patients" table (therapist column with quick-assign buttons) and from the patient management modal. During patient invite, therapists can also pre-assign additional therapists. This feature is controlled per clinic via feature flag.

Changed

  • RTM Billing Insights: Simplified the insights dashboard and projected codes calculator to focus on code counts and trends, removing the expected revenue calculations.
  • Date of Birth Input: The three-field DOB input now displays a human-readable date preview below the fields so users can verify the date they entered.
  • Cross-Therapist Plan Editing: Any therapist within the same clinic can now edit any patient's workout plan, regardless of which therapist is assigned to that patient.

Fixed

  • Login & Signup Navigation: Fixed an issue where stale authentication state could persist when navigating to the login or signup pages, which could cause unexpected behavior. The app now clears any leftover session data before showing these pages.

[2026-02-09]

Added

  • RTM Time-Based Billing (CPT codes 98979, 98980, 98981): The system now automatically tracks how much time therapists spend managing each patient per calendar month and generates the appropriate billing codes.
  • Time is tracked automatically in the background as therapists view patient details, edit plans, send messages, and use other patient-facing screens
  • New "Time Tracking" sub-tab in the In Progress view shows all patients with their accumulated time, progress toward billing thresholds, and projected codes
  • Time-based codes appear in the Billable Codes table and Insights dashboard alongside existing workout-based codes
  • Therapists can set custom reimbursement rates for each time-based code
  • Before marking a time code as billed, therapists must confirm that synchronous communication (phone/video) occurred

[2026-02-05]

Changed

  • Date of Birth Input Redesign: Replaced HTML5 date picker with three separate text input fields (day, month, year) for birthday entry across the platform. This improves mobile usability and provides consistent behavior across browsers.
  • Field order is determined by domain: MDY (Month/Day/Year) for US domains, DMY (Day/Month/Year) for international domains
  • Auto-advance focus when field is complete
  • Input validation on blur with user-friendly error messages
  • Leap year handling and invalid date detection (Feb 30, Apr 31, etc.)

Added

  • DOBFieldInput component (components/ui/DOBFieldInput.tsx) - Reusable date of birth input with three separate fields
  • useDateFormat hook (lib/hooks/useDateFormat.ts) - Runtime domain detection for date format preference
  • dateValidation utilities (lib/utils/dateValidation.ts) - Date validation and formatting functions

[2026-02-03]

Added

  • Extended RTM CPT Billing Dashboard. We now show an inprogress and insights tabs. The inprogress tab shows a kanban board of patients grouped by their RTM progress status. The insights tab shows a dashboard of analytics and trends for the RTM billing data.
  • Added filtration and sorting to the RTM CPT Billing Dashboard.

[2026-02-02]

Added

  • RTM CPT Billing Dashboard: First version of billing codes dashboard for CPT codes 98975, 98985, and 98977. Therapists can view and manage RTM billing records, mark items as billed or won't bill, and refresh calculations for all tenant patients. Feature is toggleable per tenant via feature flag.

[2026-02-01]

Added

  • Added logging for all interactions with the AI endpoints

Fixed

  • Edit Plan modal no longer shows "unsaved changes" confirmation when closing without making any changes

[2026-01-31]

Added

  • AI-Assisted Plan Editing: Therapists can now modify patient workout plans using natural language instructions (e.g., "make this workout easier" or "remove all dumbbell exercises")

[2026-01-30]

Added

  • Drag and drop exercise reordering: Exercises can now be reordered within a workout via drag and drop
  • Exercise block ordering: Exercises now automatically reposition in the workout list when their block type is changed (e.g., moving from Main Session to Warm Up)