Your training calendar New Calendar
The Activities tab is now a calendar. See planned workouts, completed activities, wellness, and race days together on one timeline. Tap any date to jump there, or hide the calendar to scroll the full feed.
Changelog
Train Ultra ships often. Here's everything that's landed.
The Activities tab is now a calendar. See planned workouts, completed activities, wellness, and race days together on one timeline. Tap any date to jump there, or hide the calendar to scroll the full feed.
Your coach now uses one carefully tuned coaching voice for everyone: specific when action is needed, warm without empty praise, and as detailed as the workout deserves. Style, tone, and length no longer vary through settings.
You can now generate or regenerate a coach evaluation even when a workout comes directly from Garmin without a matching Strava activity. The new evaluation stays in Train Ultra, while Strava posting and title updates still happen only for linked activities.
Your coach now draws on comparable workouts and longer training patterns when evaluating a session, with more room for honest teaching, earned encouragement, and a response shaped by what actually matters instead of a fixed template.
Fixed a set of activity-feedback issues: the coach can no longer replace what you wrote, pain or injury reports now lead the evaluation instead of being outweighed by clean metrics, optional steps stay visible in Garmin workouts for you to skip manually, and updated evaluations repost to Strava more reliably.
After each workout, rate your effort and how you felt, and add a note in your own words. Your coach folds it into the evaluation and remembers it for future conversations. Garmin athletes: the feel and effort you enter on your watch flow in automatically.
The wellness tile on Home now shows your resting heart rate, HRV, and sleep as one recovery picture, each with a trend against your own 28-day baseline, no matter which device the data comes from. Tap it and your coach opens the conversation with a read of your recovery and what it means for training today.
If you connect more than one wellness device (like Garmin and Oura), your coach and workout evaluations now use data from all of them, not just the most recent one. Each device is read on its own terms, so trends within a device matter more than comparing raw numbers between devices.
Train Ultra now connects to Oura. Link your ring from Settings (or the Providers screen in the app) and your coach starts factoring your sleep stages, readiness score, HRV, resting heart rate, temperature deviation, and SpO2 into workout evaluations and coaching conversations, exactly as it does for Garmin wellness data. Connecting backfills the last 28 days so your baselines are ready on day one.
Improved how the coach waits for slow training knowledge base lookups, handles multi-topic race-plan questions, and cuts off stalled AI streams cleanly, so complex coaching answers are less likely to end in failed lookup chips or raw network errors during temporary provider latency spikes.
Fixed a case where an evaluation could appear blank when the coach kept asking the training knowledge base for more context before writing its final read. Garmin activities that match a Strava activity during processing also preserve the live Strava description when Train Ultra posts the final evaluation and title.
If you start a trial without connecting Strava or Garmin, Train Ultra now sends a friendly reminder a couple of days in. Connecting your account imports your workouts automatically so your coach can start reading and evaluating them, which is the fastest way to get value from the trial.
Home, Coach, Activities, Workouts, Goals, Settings, Admin, and Wellness now share the same app content rail, so page titles and main content no longer jump sideways as you move around the browser app.
The signed-in web app now uses Go to Website for the public-site action, matching the public header’s Go to Dashboard language and making the app/site handoff feel more consistent.
The Train Ultra logo and title now keep the same horizontal position when moving between the public site and the signed-in web app on desktop, tablet, and mobile.
The authenticated web app now uses the Train Ultra brand mark from the public site, a cleaner app navigation order, calmer Site and Log out actions, and more consistent page headers across Home, Coach, Activities, Workouts, Goals, Settings, and Admin.
The web Home wellness card now opens a dedicated Wellness Trends page with your latest recovery metrics plus seven-day HRV and sleep-score trend charts, matching the iOS detail view and making recovery context easier to inspect before asking your coach what to do next.
The web Coach history drawer now mirrors the app more closely: activity-linked discussions stay visible in history, rows show when a conversation came from a workout, the active conversation is marked, and the mobile drawer has a clearer header and close control.
The web Workouts page now opens as a planner instead of a form: upcoming sessions are grouped into cleaner rows, Create workout is tucked behind a compact action, and each workout can be edited inline with clearer Garmin sync status on desktop and mobile.
The web Goals page now opens with a coach-focused header, a compact Add goal action, scannable goal rows, and mobile-friendly edit and achievement controls. Reflections and archived goals are still there, but the first screen is quieter and closer to the iOS flow.
The web Coach tab now opens with a decision-oriented starter card and compact Training, Goals, and Recovery shortcuts, matching the iOS flow more closely and keeping the composer easier to reach on mobile.
The web Home page now opens with Today with Coach, uses clearer Home sections, and improves mobile readability for the coach huddle, wellness signals, weekly stats, recent activities, and goals.
The web Settings page now starts with a grouped overview for profile context, connected providers, coach controls, External AI, billing, and support. On mobile, the Settings section switcher scrolls horizontally instead of wrapping into a wall of links.
The browser app now labels completed workout history as Activities, keeps Workouts available in the mobile menu, and gives planned workout editing more room on small screens. The old Dashboard URL still works, but the web navigation now matches the training-focused shape of the app more closely.
Trial and Pro users can now create and revoke personal MCP tokens from Settings > External AI on web, iOS, and Android, then connect external assistants including Claude Code, Codex, VS Code, and Cursor to the same Train Ultra coach they use in the app. The MCP server exposes the coach, not raw activity or provider tools.
When you have active goals, your coach now gets an explicit reminder to connect each workout evaluation back to the most relevant goal. The goals were already in the context; this makes the evaluation use them more consistently instead of treating them as background notes.
Android athletes can now connect Health Connect as an activity source, so workouts from compatible apps and devices can flow into Train Ultra and give your coach the same workout context Android-side that Apple Health provides on iOS.
Tapping the wellness strip on Home now loads the Wellness Trends screen instead of getting stuck on a loading placeholder. The screen shows your recent wellness summary plus the HRV and sleep-score trend charts as intended.
For structured run-walk sessions, your coach now checks lap cadence and pace before summarizing the workout. This helps it catch cases where you kept running through early recovery laps before switching to actual run-walk intervals, and regenerated iOS evaluations now preserve the debug details needed to audit what the coach saw.
Garmin FIT files now preserve device temperature for generic workouts, so your coach can recognize sauna and heat-exposure sessions from the actual temperature and heart-rate profile instead of guessing from a sparse workout file.
Regenerating and accepting a new title could fail with an error and leave Strava unchanged when the activity already had a saved workout evaluation. This was most visible on Garmin activities. Accepting a regenerated title now updates Strava reliably.
Garmin is now a first-class activity source. Connect your Garmin account and your coach reads every run, ride, and workout, writes evaluations, generates titles, and tracks your training, exactly as it does for Strava athletes. If you connect both, choose which one Train Ultra reads from under Settings, Connected Providers. With Strava also connected, your AI titles and evaluations still post to the matched Strava activity for your followers.
We rebuilt trainultra.app from the ground up. A cleaner, faster, coach-first site with new Features, Pricing, FAQ, About, and Blog pages, plus a refreshed look across login and support. It leads with the coaching relationship: a private coach that reads every workout you post to Strava. Same app, sharper front door.
When your coach plans a run or ride, Train Ultra now builds the matching structured workout in Garmin Connect and puts it on your calendar for the right day, so it is ready to start from your wrist. It keeps itself in sync: edit, move, or delete a planned workout and Garmin updates to match. Turn it on or off anytime under Settings, Connected Providers, Garmin Connect. Running and cycling to start. Watch sync is a Pro feature.
On iOS, longer Home briefing cards now leave room for the small discussion arrow in the lower-right corner. The arrow stays in the same place, and the text wraps before it can overlap. Tapping any Home briefing card also keeps the Coach handoff on the typing state, so the default Coach prompt screen should not flash during the transition.
You no longer have to hop out to the web to go Pro on your iPhone. The Pro paywall now offers a native, Face ID checkout for a monthly or annual plan, with the annual option showing how much you save. Restore Purchases brings your subscription back on a new device or reinstall, and you can manage or cancel anytime from your Apple subscriptions. Already subscribed on the web? Nothing changes, you keep managing that on the web.
Fixed a rare case where the app could briefly show a "session expired" message right after you opened it. When several parts of the app refreshed your session at the same moment, one of them could fail even though the refresh actually succeeded. Those requests now coordinate a single refresh and recover quietly, so you stay signed in without the spurious error.
Upcoming planned workouts now show the next 90 days instead of stopping after 30 days. If your coach builds a plan several weekends out, those later sessions stay visible in the Workouts view on web and iOS instead of seeming to disappear.
Your Home briefing is now a conversation starter. Tap the Coach says headline, any of the three insight cards (What is working, The caution, This week), or the year-over-year card, and your coach opens a chat already knowing what that part of your briefing said, so you can dig in without re-explaining your week. The old Read full briefing link is now Discuss this briefing, which hands your coach the whole write-up to talk through.
Every activity now has a prominent button at the top of its workout evaluation to discuss that workout with your coach, and it is there the moment the activity arrives, before the evaluation even finishes generating, so you never have to wait to start the conversation. If you already have a chat going for that activity, the button reads Continue the discussion and shows an indicator so you can pick up where you left off. Opening a discussion drops you straight into the conversation, and a back button returns you to the workout when you are done.
When your Pro trial is wrapping up, you will now get a heads-up the evening it ends and a friendly reminder the next day, by push and email. And the first time you open the app after your trial, instead of a plain upgrade screen you will see a short recap of what you actually did during your trial, the workouts you logged, the evaluations your coach wrote, the conversations you had, and the goals you set, with a note from your coach. Not on a trial, or already subscribed? Nothing changes. Every reminder email has a one-tap unsubscribe.
During your Pro trial, the days-remaining banner used to show only on the Goals and Coach tabs. It now appears on Home and Activities as well, so you always know how much trial time is left no matter where you are in the app. If you are not on a trial, or once you subscribe, nothing changes.
Getting started is now just the essentials: connect Strava, then choose whether to turn on notifications. The walkthrough screens that introduced each feature one at a time are gone, you will discover those in the app, where they make more sense. We also stopped asking for your sex, date of birth, and years running up front; add those whenever you like under Settings, Athlete Profile, and your coach gets sharper as you do. On iOS the notifications prompt now tells you exactly what you will get: a heads-up the moment your coach has feedback on a workout. If you do not use Strava, we now explain why it matters before you skip, since titles, evaluations, and your coach all run on your Strava activities. Existing users will see the shorter tour once on next open.
Pro now includes a new Settings control: hide the short Train Ultra promo line from your public Strava activity descriptions. Find it under Settings, in Smart Titles, as "Show Train Ultra promo on my Strava posts", turn it off to keep your posts clean. The promo line now shows by default for everyone on the free plan and during the trial, so your followers can discover Train Ultra; subscribing to Pro unlocks the toggle to remove it. This affects only the promo line, where your coach evaluation appears is still governed by your evaluation posting setting.
The note Train Ultra adds to your Strava activity descriptions got a refresh. Your own description always stays on top. Below it, your coach evaluation now reads simply as "Coach says:" followed by the note, with the old divider line and badge removed so it looks tidier in your feed. On the free plan, the line that introduces Train Ultra to your followers now leads with the coaching rather than the title feature. Accepting a title no longer leaves a duplicate promo line, and your coach note is preserved when you do.
We ran a structured security audit before public launch covering dependencies, secrets hygiene, the OWASP Top Ten, network and TLS posture, dynamic and static scanning, DigitalOcean platform posture, and the iOS surface. Concrete results: shipped strict security headers including HSTS and a report-only Content Security Policy, tightened session cookie flags to Secure plus HttpOnly plus SameSite, locked down JWT verification, added rate limits on the email login endpoints, regenerated sessions on every auth state change, hardened a JSON-in-script admin view against XSS, and switched the iOS Keychain to keep auth tokens off iCloud backups. We also published a vulnerability disclosure path at SECURITY.md and wired up recurring automated security scans so the audit does not decay.
The new-user tour is now six screens instead of twelve, Strava connect, automatic titles + evaluations, your coach, goals and weekly planning, Garmin, and Settings (now leading with your athlete profile). The merges keep every feature covered without one-feature-per-screen pacing, so you can get to the actual product faster. Existing users will see the refreshed tour once on next open as a quick re-introduction, then it's out of your way.
The first screen of the iOS app got a polish pass. The Train Ultra icon now sits up top, three short lines describe what you get out of the app, and the copy throughout is plainer. The sign-in button no longer reads as a flat gray slab in dark mode, it stays visibly tappable even before you have typed your email. From the code screen you can now resend the 6-digit code without going back to retype your email. Ships on the next TestFlight build.
Home, Activities, Goals, Coach, and Settings now share the same canonical look on iOS, same grouped-gray surface, same uppercase section headers, same nav-bar tint, same large titles. Each tab used to render with slightly different background colors, header styles, and chrome; switching between them now feels like one app instead of five. No behavior change, every screen does what it did, just with a unified visual treatment. Shows up on the next TestFlight build.
We rewrote our Terms of Service and Privacy Policy to be clearer and to include the protections a real consumer product needs. The Terms now spell out binding individual arbitration with a 30-day opt-out window and a small-claims carve-out, refined limitation-of-liability and refund language, and the usual boilerplate (severability, assignment, force majeure). The Privacy Policy now includes GDPR (lawful bases, data-subject rights, supervisory-authority complaint) and CCPA / CPRA (categories collected, an explicit "we do not sell or share for cross-context behavioral advertising" disclosure, sensitive-PI disclosure for health-related fields), plus per-category retention windows and the Apple App Privacy disclosure mapping. The next time you sign in on the web or iOS, you will see a one-time prompt to read and accept the updated documents. If you have any questions about either document, email [email protected]. The full text lives at /terms and /privacy.
The Coach can now read, add, and update your goals directly in chat, no more leaving the conversation to open the Goals tab. Ask explicitly ("add a goal to run 100 miles this month") and it gets saved right away, or let the conversation surface one naturally, when you agree on a target, the Coach will offer to save it and wait for your "yes" before anything goes in. You'll see a small "Goal saved" or "Goal updated" chip on the Coach's reply so you know it took. Deletes and archives still live in the Goals tab, the Coach can't remove goals for you. iOS users will see the chip after the next TestFlight build ships; web works today.
Train Ultra now talks about itself as a coach instead of leading with "AI" everywhere. "AI Coach" is now just "Coach", "AI Titles" is "Smart Titles", and "AI Evaluations" is "Workout Evaluations". The iOS Settings section grouping these features is "Smart Features". Nothing about how the features work has changed, same model, same evaluations, same coach. We just stopped foregrounding the technology in the chrome around your training. The onboarding tour re-shows once on next open so you can see the new naming in context. Privacy Policy, Terms, and our "your data is never used to train AI models" guarantee are unchanged.
Right after a successful Pro subscribe, the Settings → Billing page could briefly show both the green "You're on Pro" banner *and* the old trial banner + Subscribe cards underneath, until you hard-refreshed. That was a race between Stripe's success redirect and the activation webhook landing. Settings now waits briefly for activation to complete on the return trip, so the page renders the correct Pro view on the first paint. No more contradictory state, no refresh needed.
AI Titles and AI Workout Evaluation are now each a single on/off switch in Settings, no more per-activity-type picker for titles, and the misleading "for runs" label on evaluations is gone. Both features run on every activity you upload to Strava when enabled, full stop. Everyone is enabled by default after the update; flip either toggle off in Settings if you don't want them. The simpler model matches what evaluations already did under the hood and is easier to reason about.
Your 14-day Pro trial is supposed to feel exactly like Pro, and now it does. Two parity gaps are fixed. First, the trial-status banner ("Trial: N days remaining" with a Manage link) now appears on the Goals tab and the Coach tab on both the web and iOS, not just the Coach. Wherever you're working, the time-remaining count is visible. Second, audio playback on AI workout evaluations now works during the trial. It was silently gated to paid Pro accounts; trial users tapping Play got nothing. Active trials now get the full Pro experience, banner, audio, and every other Pro capability, until the day the trial expires.
After the coach built out a multi-week training plan, long-running conversations could start failing with "Failed to generate response", and tapping Retry would deterministically hit the same error until you sent enough new messages to slide past it. Fixed: the conversation history is now sized by content length rather than message count, so the coach never sends a malformed request to its model. Active threads with lots of back-and-forth just keep working.
We've rebranded. VibeWriter is now Train Ultra, same product, same features, sharper name, new home at trainultra.app. Nothing about how the app works is changing: same AI titles, same workout evaluations, same coach, same goals and training summaries. Just a name that fits where the product is headed. If you have the old VibeWriter iOS app installed, install the new Train Ultra app from TestFlight when you get the invite; the old build will stop working at cutover. The web dashboard at vibewriter.fun automatically redirects to trainultra.app, so any bookmarks will keep working.
When you tap Discuss on a workout, the coach now opens the conversation with a brief read of what it sees and asks how it actually felt, and that conversation is permanently tied to that workout. Reopening Discuss on the same activity picks up where you left off. A small dot on the Discuss button shows which workouts you've already talked about. The bigger change is invisible: anything you share, that bicarb wrecked the long run, that an easy day felt like another gear, that hip pain crept in, flows forward as context into your future evals and planning conversations. The coach stops planning your week against numbers that miss the story.
Larger plan changes, like "rebuild the next two weeks" or "shift everything to start Monday", were occasionally failing with a "Failed to generate response" banner when the coach needed several rounds of tool calls to finish the work. The cap that gated the loop has been raised, so multi-step schedule edits now complete without needing a retry.
Your AI workout evaluation is no longer a dead end. Two new Pro buttons sit right with each evaluation, on the web and in the iOS app. Discuss drops you straight into the AI Coach with the conversation already started about that specific workout, no need to open the coach tab and re-explain which run you mean. Ask your follow-ups ("why was my heart rate so high?", "what should I do tomorrow?") and the coach already has the context. Play reads the evaluation aloud, so you can listen while you cool down instead of staring at your phone, pick a male or female voice under Settings → AI Coach. Both are part of Pro; the audio is prepared the moment you open an activity, so Play starts right away.
Workout evaluations now come in three lengths: Concise (a coach's text, 1–3 sentences, one observation plus a forward-looking nudge), Standard (a focused short paragraph with the assessment and what's next), and Detailed (the multi-paragraph read you've had until now, pacing, structure, plan-vs-actual, recovery, and a recommendation). Real coaches don't write essays after every session, and now your AI doesn't have to either. The new option lives next to Coaching style and Tone in Settings → AI Coach. New accounts default to Concise; long-standing accounts stay on Detailed unless you change it. Only workout evaluations are affected, the coach chat keeps its natural length.
Connecting Strava is now part of the first-run tour, and once you connect, VibeWriter pulls in your last 365 days of activities right away. By the time you finish the rest of the tour, your home screen has a real fitness headline, your activities tab is populated, and your AI coach can speak to your actual training history instead of starting from scratch. Existing users will see the new step on next launch with their Strava already marked connected, no action needed. (Don't have Strava yet? You can skip the step and continue.)
Your AI coach now knows who it's coaching. A short profile, sex, age, years running, and (optionally) your max and threshold heart rate, threshold pace, and any health or injury history, now feeds the coach, your workout evaluations, and your training summaries, so guidance is calibrated to you instead of generic. New accounts are asked for the quick basics during sign-up; everyone else gets a one-time prompt to fill them in. It's all editable any time under Settings → User Settings → Athlete Profile, and the heart-rate, pace, and injury fields are entirely optional, add them when you have them. Age grows with you automatically (we store your birth date, not a number that goes stale).
AI evaluations and titles now recognize sauna and sauna + cold-plunge sessions from device temperature, instead of mislabeling them as workouts or junk volume.
Your activities are now titled for what they actually were, "3×1mi Threshold @ 6:45", "Easy Aerobic + Strides", "Long Hilly Trail Run", instead of only a creative one-liner. This is built from your AI workout evaluation, so the title reflects the real session, and it stays in sync: regenerate an evaluation (for example after adding context) and the title updates with it automatically. Descriptive is the new default for everyone. Prefer the dad jokes? Your custom prompt is untouched, just switch Title Style to Creative in Settings → AI Titles and you're back, now with one upgrade: creative titles finally get workout context, so a treadmill run won't get called a lakeside loop. Note: Descriptive titles need workout evaluations turned on, with evaluations off, choose Creative.
Your AI coach now treats the ultra-running knowledge base as the source of truth for any number or protocol it gives you, fueling (carbs/hr), paces, zones, weekly volume, taper, heat acclimation, and the like. Before this, on a multi-part question like "how should I race this?" it could ground the pacing in real methodology but answer the fueling from a generic guess, sometimes landing well below what the knowledge base actually supports for a hard, long effort. Now it consults the knowledge base for each part of the answer and won't state a performance number it didn't look up. It also holds its ground: if you push back, it re-checks the methodology and either explains why it stands or revises with the specific reason it changed, instead of instantly folding and walking the number around. And you'll now see a "Consulted knowledge base" chip beneath the coach's replies whenever it looked something up, a quiet, muted one if a lookup found nothing or failed, so it's clear when guidance is grounded. The same grounding now applies to AI workout evaluations.
Two fixes to AI workout evaluations. First, when the evaluator looks at your prior week for context, it now sees the actual structure of those runs, interval reps, tempo blocks, warm-up and cool-down, instead of a single flattened average. Before this, a structured session earlier in the week (say a 3×8min threshold workout) could be misread as an over-assertive easy run, because the evaluator only saw "7 miles, 160 average HR." It now reads the laps and recognizes the workout for what it was. Second, the "Activity Context" note you can add when you regenerate an evaluation now actually reaches the coach, and is treated as your authoritative account of the session. Previously, if you had goals or coaching preferences set, that per-workout note was silently dropped, so telling it "this was 8% on the treadmill" or "I was getting over a cold" had no effect. Now the evaluation trusts your first-hand account over the raw device file, which routinely misses treadmill incline, indoor pace, a dropped sensor, or how you actually felt, and adjusts the assessment accordingly.
VibeWriter now has a paid tier. Pro is $5/mo or $48/yr (billed annually at $4/mo, ~20% off). Every new account starts on a 14-day Pro trial, full AI Coach with persistent memory, goal-aware workout evaluations, training summaries and YoY rollups, full goal management, and ad-silenced Strava descriptions. After the trial, Free keeps your AI titles, wellness ingestion, and AI-grounded evaluations going; Pro adds the coaching layer on top. Existing users are permanently grandfathered with full access, thank you for being here from the start. Manage your plan at /billing on the web; iOS users can tap Settings → Subscribe on the web until Apple in-app purchase lands in a future release.
The Home tab is now coaching-first. Instead of long paragraphs of training summary and year-over-year prose, you get a one-sentence headline from your AI coach, three short cards calling out what's working, the caution to watch, and your focus for the week. Last night's recovery (HRV, sleep, body battery / Oura readiness, resting heart rate) sits right there too, with a pill that flags when your HRV is below your 7-day baseline. There's a countdown chip for your next dated goal so your A race is always one glance away, and recent activities are now a horizontal strip. The full briefing and full year-over-year are still one tap away if you want the depth.
Workout evaluations and the AI coach are now aware of the next two weeks of planned workouts on your schedule. Before this, the evaluator would sometimes suggest a session for tomorrow that contradicted what you'd already planned, sounding like it didn't know your week. Now it acknowledges what's scheduled when recommending what's next, while still critiquing the plan when the actual work performed warrants a change. The plan stays a working hypothesis, not gospel.
Some athletes were seeing raw JSON instead of their training summary on the home screen, an artifact of an older background job that ran every time a new Strava activity was processed and bypassed the JSON parsing the rest of the app relies on. That job has been retired in favor of the single-pass home generator, so summaries, fitness headlines, and the year-over-year comparison are always parsed cleanly and stay in sync. We also added live LLM smoke tests covering both rich and sparse training histories so the bug class can't quietly come back.
Tapping the iOS push notification that announces a new AI workout evaluation now opens directly to that activity's evaluation, instead of just opening the app. Back returns you to your Activities list as you'd expect.
A focused improvement pass on the iOS app: a new app icon, a refreshed sign-in screen, a cleaner Settings layout (rows grouped under Account, AI Features, and Help), accessibility improvements throughout (clearer VoiceOver labels, paired icons on color cues, larger tap targets, Reduce Motion support), and a smoother loading experience on the home screen, placeholder shapes instead of indeterminate spinners while your fitness headline and training summary are being generated. Plus the same date headers (“Today” / “Yesterday” / “Wed, Nov 12”) and clearer navigation labels you'd expect from a system app.
The home page, workout evaluations, AI titles, and the coach now share the same understanding of your goals, training preferences, and recent coach conversations, so you'll stop seeing contradictory feedback between surfaces. Tell the coach you want to focus on low-impact cardio and the next workout evaluation reflects that. Ask the coach to drop the sarcastic titles and the next title respects the request. The home page's fitness headline and training summary now come from a single AI pass, so they can no longer disagree about whether you're overreaching, underdosing, or building well.
Coach-prescribed workouts now appear correctly under Upcoming on the day you're in, regardless of your timezone. Before this fix, asking the coach to plan a workout for "today" could silently land it on the wrong calendar day for athletes outside UTC, so it never showed up in the Upcoming list and the next activity evaluation didn't reference it. Both the coach and the dashboard now resolve "today" in your local timezone end-to-end.
A guided tour of VibeWriter's features now runs the first time you open the app or web dashboard, AI titles, evaluations, the AI coach, goals, planned workouts, connected providers, and personalization, all in a quick walkthrough you can skip any time. When new features ship, the tour automatically shows again on your next app open so you don't miss what's new. We also added a "What's New" pop-up that surfaces recent changelog entries one at a time the next time you sign in, flip through them, then dismiss. Both work on web and iOS; you can re-run the tour any time from Help & Support.
Your AI coach can now save the workouts it prescribes, so they don't disappear when the chat scrolls away. Ask the coach to plan tomorrow's session, or the next week, and each workout lands on your schedule with a sport, a date, and a clear description (intervals, zones, paces all welcome as plain text). View what's coming under the new Activities → Upcoming tab on iOS or the new Workouts page on the web dashboard, and see today's session as a card on the iOS Home tab. Write your own from scratch too, or tweak what the coach scheduled. When you complete a workout on Strava that matches a planned date and sport, VibeWriter automatically links them, so the AI evaluation can comment specifically on whether you executed the plan as written, not just the activity in isolation.
The Coach chat now opens with a friendly greeting and a handful of starter prompts, grouped under Training, Recovery, Goals, and Performance, so you always have somewhere to begin. Tap a prompt and it lands in the input field ready for you to tweak before sending. Available on both the web dashboard and the iOS app.
Your AI coach (and the workout evaluator) can now ground their answers in a curated ultra-running knowledge base, training plans, taper protocols, fueling and pacing, recovery, heat adaptation, and race-day tactics. Ask 'how should I taper for a 100K?' or 'what's a smart fueling rehearsal for my long run?' and the coach pulls from real ultra-specific reference material instead of generic running advice. The coach decides when retrieval helps; everyday questions and small-talk turns are unaffected.
Your AI coach can now reach across your full Strava history (up to two years), not just the last 30 days. Ask about a race from last spring and the coach actually finds it. Ask 'how was my March?' and you get rollups instead of a vague paraphrase. Ask about a specific workout's intervals or pacing and the coach can drill into the high-resolution data the evaluation pipeline already uses. Wellness trends (HRV, RHR, sleep) and prior coach evaluations are also one tool call away, so 'what did you say about yesterday's run?' returns the exact prior text.
You can now permanently delete your VibeWriter account from inside Settings on both iOS and the web dashboard. Deletion erases everything we hold, workout titles, goals, coach history, wellness data, and disconnects VibeWriter from Strava, Garmin, and Oura, so we vanish from your connected apps. We send you an email receipt confirming the deletion. Activity titles VibeWriter previously wrote on your Strava activities stay on those activities.
Every coach conversation now carries a short AI-generated title that names what it was actually about, so your history is finally scannable. Tap any past conversation on iOS to jump straight back in and keep chatting, no more read-only detour. The web /coach page gets a ChatGPT-style sidebar with every conversation listed, click-to-resume, and inline delete. The coach also no longer kicks off with a canned greeting; the chat starts when you do.
Sign in with email and a one-time code instead of through Strava. Strava is now a connected provider alongside Garmin, so you can edit your profile name, manage your email, and keep your account independent of any single integration.
Coach replies on iOS now render markdown, headers, bullets, bold, and code, so longer answers and structured plans are easier to read.
Your AI coach now remembers personal context across conversations, preferences, past races, recurring injuries, training history. View and edit what the coach knows from a new Memory subpage in settings.
Set your primary sport (running, cycling, swimming, or multisport) and pick a coaching register and tone. Your preferences shape every evaluation and chat response so the coach sounds like a coach for you.
AI evaluations now use high-fidelity time-sampled streams, device-recorded autolaps, and best-effort segments. Tempo runs, interval workouts, and long efforts get analysis that reflects exactly what your watch recorded.
You can now remove an activity from your VibeWriter history directly from the iOS activity detail view.
Coach conversations are saved automatically. Browse past chats, resume where you left off, or start a new one, on web and iOS. Long-press any AI-generated text to copy it.
Choose how AI evaluations land on Strava, append them to your activity description, replace it, or keep evaluations off Strava entirely. Configurable from both web and iOS settings.
Web settings now use a sidebar layout with auto-save, dedicated subpages for the AI Coach and Profile, and a built-in Help & Support section.
Connect Garmin directly to pull HRV, sleep, body battery, and training readiness. The AI coach and evaluator factor your recovery into every conversation, evaluation, and training summary, and the summary now calls out recovery trends.
Fixed an issue where the coach was using UTC instead of your local timezone when reasoning about activity times.
Chat directly with your AI coach on the web and in the iOS app. The coach has full context of your recent activities, evaluations, and training goals, ask it anything about your training. Responses stream in real time.
Add a personal reflection to any archived goal. The AI coach reads your reflections when giving advice, so lessons learned from past training cycles carry forward automatically.
Fixed a bug where reactivating an archived goal would immediately re-archive it. Also fixed goal target dates displaying incorrectly in some timezones.
New users now get AI workout evaluations automatically, no need to toggle it on in settings.
Your Home page now features an AI-generated fitness headline summarizing recent physiological trends, plus a year-over-year comparison pulling historical data from Strava.
Get notified on your iPhone when a new AI workout evaluation is ready. Tap the notification to view the full analysis.
The iOS Home tab now shows monthly stats alongside weekly stats, and all tabs load instantly from cache while refreshing in the background.
The Support page now loads FAQs dynamically from the server, keeping help content fresh without requiring an app update.
The public website has a fresh dark theme with updated messaging, feature highlights, and a full changelog.
The iOS app now includes a Home tab with your AI training summary, weekly stats, and activity streak, plus a full Goals tab for creating and tracking training goals.
A new Home page brings together your AI-generated training summary, weekly activity stats, streak tracking, recent activities, and active goals, all in one view.
Set training goals (race targets, mileage goals, fitness milestones) and the AI weaves your progress into every evaluation and weekly summary. Create, edit, achieve, and archive goals from the web or iOS app.
VibeWriter is now available as a native iOS app with Strava authentication, activity dashboard, settings management, and support, a companion to the automatic Strava integration.
Added a full REST API layer to support the iOS app, including endpoints for authentication, activities, settings, goals, changelog, and home data.
AI evaluations now include device-recorded laps and intervals from your watch, giving the coach better insight into structured workouts like tempo runs and interval sessions.
Added Garmin Connect integration code for future direct Garmin data access. Currently pending API key approval, Garmin users can continue syncing via Strava.
You can now regenerate AI evaluations from the dashboard. Evaluations are posted directly to your Strava activity descriptions with a clean separator, preserving any existing description text.
The biggest update yet. After every workout, VibeWriter's AI now generates a detailed evaluation, analyzing pacing, effort, heart rate, and intervals, and posts it to your Strava activity description automatically.
Added pre-built prompt presets for title generation so you can quickly switch between styles (e.g., motivational, humorous, poetic) without writing custom prompts.
Added Google Analytics 4 tracking to better understand how users interact with VibeWriter and measure conversion from the landing page.
Added an admin portal for monitoring system metrics, total users, daily activity counts, title generation stats, and user management.
The entire web app is now fully responsive with a hamburger menu, card-based activity layout, and bottom sheet modals optimized for mobile devices.
Users can now choose between imperial and metric units, and filter which activity types get AI-generated titles. Preferences are reflected in the AI prompt context.
Improved the AI title generation to avoid repeating recent titles and to stop wrapping titles in quotation marks. Titles now feel more natural and varied.
Added a public changelog page to keep users informed about new features, improvements, and bug fixes.
Separated AI prompt configuration into a dedicated Settings page, simplifying the activity dashboard.
Added a support page with FAQs and troubleshooting guides to help users resolve common issues.
The "Strava Quote Generator" has been rebranded to "VibeWriter" with a new name, logo, and visual identity.
Users can regenerate a new title suggestion for any activity from the dashboard with a single click.
Launched the core feature: connect your Strava account and automatically get creative, AI-powered titles for new activities based on your personal prompt.