Skip to content

Lactic Preview 0.2.0-preview.543 (testing build)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Nov 07:05
999a6e6

Built from 999a6e6 (Merge modular-ui into main (#209)).

Coming in the next release

  • The Ride screen says how a ramp test works: ride until you can't hold the target, then end the ride.
  • Windows and Linux: Head unit's "Start with Zwift" says Lactic stays in the system tray, and the coach shortcut shows as Ctrl+K.
  • A free ride is saved as "Free ride" instead of taking the name of the day's planned workout.
  • If the built-in coach has no model or key yet, the coach says to finish setting it up in Settings → Coach, and setup's coach step asks for them (or No coach) before it counts as done.
  • Lactic Modular: ask the coach for a ride field or ride page section Lactic doesn't have, and it writes a small plugin for it. You see it running on a sample ride, and its code, before you add it.
  • Settings is organized into sections with a menu, and has a search box (⌘F). ⌘, opens Settings from anywhere.
  • Today's This week compares rides since your plan started with what it planned, so rides you brought in from before the plan no longer show as "314 of 36 TSS". They still show on their days.
  • iPhone: Customize fields now has Head unit, so you can set up the head unit's pages on your phone. The phone remote shows those pages during a head unit ride.
  • New riders who don't know their FTP start with an easy ride on day one; the FTP test comes on the next good day.
  • Today no longer shows a coach error when the built-in coach has no API key yet; the brief simply stays hidden until the coach is set up.
  • iPhone: when Apple Health hasn't been asked about something Lactic reads ("Authorization not determined"), Lactic shows Apple's permission sheet again, and Settings shows Connect Apple Health instead of the error.
  • Phones: tap the tab you're on to go back to the top of its page (or back to its main page first).
  • iPhone: if Lactic on this iPhone hasn't been given access to Apple Health yet, Today asks you to connect it instead of waiting for last night.
  • Settings → iPhone is now Settings → Phone.
  • iPhone: pull down on any page to refresh it. Lactic reads Apple Health and syncs with your computer while the logo builds.
  • iPhone: Apple Health no longer gets stuck and stops bringing in new nights until you quit the app. "Read Health now" in Settings says what went wrong if a read fails.
  • Phone: your coach and intervals.icu API keys now come across from your computer even when a first sync stops partway, and Settings → Phone says why if they don't.
  • Every workout in the library shows its shape. Tap one for its page, with each interval's target. Plan has a new Workouts section to browse them, ride one now or add it to a day. In the Ride library, "Back to today's plan" takes you back to the day's workout.
  • Setup is now two quick steps, FTP and weight then your trainer, and you're riding. Your week and goal, past rides, sleep and weight, and the coach wait on Today under "Finish setting up".
  • High contrast: Settings → Appearance → Contrast. Darker text, clear borders and stronger zone colors, rides and the overlay included. System turns it on with your Mac or iPhone's Increase contrast. Input and toggle borders are a little darker for everyone.
  • Plugins add ride fields (on the Ride page, the overlay and head unit rides) and sections on a ride's page. Manage them in Settings → Plugins: Added is where you switch plugins on or off, update them and see each one's details, and Browse lists Lactic's own.
  • Open overlay is now a button next to End ride on every ride, workouts, free rides and head unit alike. To open it by itself, tick "Open when a ride starts" under Ride → Setup → Overlay.
  • See a plugin before you add it. The add screen shows its ride fields and ride page section drawn from a made-up sample ride, never your own data.
  • Head unit says which app controls your trainer, like "Zwift controls the trainer", when Zwift, Rouvy or MyWhoosh is open.
  • Head unit can start with Zwift. Tick "Start with Zwift, Rouvy or MyWhoosh" under Head unit (or in Settings → Head unit) and Lactic stays in the menu bar; when one of those apps opens, the Ride page gets the head unit ready and pedaling starts it.
  • Head unit on the Ride page. Ride Zwift, Rouvy or any app and Lactic shows your own fields on the overlay, plugins included, and records the ride, without ever touching your trainer. If the trainer only takes one app, Lactic uses your power meter or heart rate instead. Head unit rides aren't posted to Strava automatically, since the other app usually does.
  • With the AI app coach turned off, Claude and other AI apps that still list Lactic no longer show a "Couldn't start" error; they see one tool that says how to turn the coach on.
  • iPhone: the coach chat stays fitted to the screen after you type, with its title clear of the clock, no gap under the message box, and the keyboard steps aside when you send.
  • Settings → Plugins → Browse lists Lactic's own plugins, such as W′ Balance, Best Efforts, Matches, Fuel Reminder and Zones. Add one in two taps. Each is open source, so you can read the code to learn how it works.
  • iPhone: hold any Today card to rearrange Today. Drag cards, tap "–" to take one off, tap its size to change it, and add cards back from the bottom. The iPhone starts with your computer's layout and keeps its own after you change it.
  • iPhone: set up ride fields on the phone. Tap a field to pick what it shows, choose 1, 2, 4 or 6 big numbers a page, and swipe between pages. When the phone is the remote for a ride on your computer, it shows its own pages.
  • iPhone: a new Fields widget for your home or lock screen. Hold it, tap Edit Widget, and pick what each spot shows: recovery, HRV, resting heart rate, sleep, form, fitness, fatigue, FTP, today's ride, this week's time or rides, or weight.
  • Make Today yours: "Customize Today" at the bottom of Today lets you drag cards into any order, make them small, medium or large, and take off the ones you don't want (they wait in "Add a card"). Undo, Cancel and Reset are always there. Reorder or hide tabs in Settings → Layout.
  • Add plugins from a GitHub link or a .lacticplugin file in Settings → Plugins. You see what each one reads before it's added, switch it on or off per computer, and choose whether the coach sees its numbers. Updates are only offered, never automatic. Plugins can add a section to a ride's page, but never show up on Today.
  • Plugin ride fields can draw a small live chart under the number, such as time-in-zone bars, a trend line or a gauge. The Zones example plugin adds HR zones, Power zones and Power, last 5 min.
  • Plugin ride fields. In Customize fields, pick one from the Plugins group and it shows on the ride screen, the overlay and the iPhone, marked with a small purple square. If a plugin is slow or stops, its field shows "–" and your ride carries on.
  • Choose your ride screen's numbers, like on a bike computer. Before a ride, press Customize fields to pick a layout (the usual screen, or 1, 4, 6 with the chart, 8 or 10 big numbers), tap a field to choose what it shows, and add pages you flip through with ← → or a swipe while riding. Make your own fields with no code, like 10-second power, % of FTP, this interval's average, or your best 15-second (or any length) power so far in the ride. Free rides, the overlay over Zwift and the iPhone follow the same pages unless you set them up separately.
  • Ask the coach where something is and it answers from your own layout. Ask it to move a Today card, hide a tab or add a ride field and it offers the change with an Apply button; it adds rather than swaps unless you ask. Plugins you share with the coach show it numbers only, and it never installs or recommends plugins.
  • Weigh-ins from other scales in Apple Health now come into Lactic on iPhone and keep your profile weight current, and weigh-ins from your Body Pod or typed into Lactic are saved to Apple Health when "Save rides and weigh-ins to Health" is on.
  • Pairing an iPhone you've been using on its own with a computer that already has a plan now also brings across the events, breaks, race reports and check-ins you added on the phone. The computer's plan for the days ahead stays as it is.
  • On iPhone, your ride shows on the lock screen and in the Dynamic Island: the interval under way with its countdown, power against target, heart rate, cadence, what's next and time left. It shows for rides on the iPhone and, while Lactic is open on it, for a ride on your computer too.
  • If the connection drops while the coach writes today's brief, Lactic tries again on its own, and shows Try again instead of "error decoding response body".
  • Rest days on Today have a new illustration: your bike parked for the night under the moon and stars.
  • Before your first ride, Today shows one line about where your fitness numbers come from instead of form, fitness and fatigue at zero. The Plan page's warning about your hours limiting the build now only shows if you picked a faster pace than the default, and says it in plain words.
  • Today: This week's day tiles are shorter, and a ride that made up a session moved from another day now shows its ride shape instead of just its TSS.
  • Your plan starts the day you set Lactic up: the first week's rides fit into the days left in it. If there's nothing planned that day, Today offers an easy 30-minute first ride to try your trainer.
  • iPhone: during a ride, pause, skip, intensity and End ride stay docked above the tabs, so you never scroll to reach them.
  • Today puts the key things first. Recovery is four quick tiles (HRV, resting HR, breathing, sleep), each with a bar showing your usual range and a dot for last night. Then "Ready to train?" and Indoors or Outside, then today's plan next to the suggested ride, each with its own Start ride. "Something else…" offers today's other options, the library, your own workouts or a free ride. The coach's brief comes after, and it's rewritten if your recovery score changes a lot after it was written.
  • A new plan no longer starts with a recovery week when you set it up partway through a week, so your first week has real riding in it. Riders without a coach or sleep tracking no longer see lines about them after a ride or on Progress.
  • The coach's message box no longer shrinks to a sliver after you delete old conversations and start a new one.
  • Warm-ups now open the legs: before tempo, sweet spot and harder workouts, the 10-minute warm-up is a 6-minute build and three short efforts, each a little harder than the last (20 s at 110, 120 and 130% before hard days; 30 s at 90, 100 and 110% before tempo and sweet spot). Workouts stay the same length; endurance and recovery rides keep the plain build. This week's plan picks them up too.
  • A coach brief written before the brief-and-suggestion fix is written once more, so today's brief and the option marked under it agree. With Adaptive workouts on, the brief may mention that Lactic eases later reps for you during the ride.
  • New experiment, adaptive workouts (turn it on in Settings → Experimental features): if a workout is clearly too hard, say your cadence fades at the end of a rep or your heart rate won't come down between reps, Lactic eases the reps still to come by a few percent and offers Undo. If it looks too easy, it asks before making them harder, and no answer keeps the plan. It never changes the rep you're in, tests or race openers. The ride's page shows what changed and why.
  • Today's coach brief and the suggested option under it now always agree: if the coach says ride it as planned, that's what's marked, and when a later recovery score changes the advice, the brief is rewritten. The coach also no longer offers to change a workout mid-ride; it points you to an easier option before you start, or the intensity and skip buttons while you ride.
  • Warm-ups now finish at the power of your first interval and cool-downs start at the power of your last, so there's no jump or drop where they meet. Hard first efforts still start with a step up. Edit the first interval and the warm-up follows it.
  • Sleep: the coach no longer quotes a weekly sleep debt total. Like Today, it tells you how much to aim for tonight. iPhone: Health reads no longer start partway through a night, so a night can't be cut down to its last few minutes, and older nights are read again once to fix any that were.
  • Today is about today: your workout first, then how this week and your plan are tracking, your form and your recovery. Rest days get a proper rest-day card. Last week's review moved to the top of Progress.
  • Weighing in is now weekly: Today only asks before your first ride of the week, and only when there's no weigh-in from the last 7 days (scale, typed in, or Apple Health). You can type your weight in right there, or put it off until next week.
  • The Last night card on Today and Health is now called Recovery.
  • Race courses: set a target finish time and Lactic works out the FTP it takes, whether that's realistic by race day, and the power to hold on each climb to make it. If you need more FTP, the plan builds toward it. Pick how you'll ride the event (solo, a small group or a bunch) and times allow for the draft, with what getting dropped on the main climb would cost you.
  • Race courses: times now show a likely range, and allow for racing at altitude (Lactic asks where you live) and in the heat. Fueling follows the current sports-nutrition guidelines. Curious how it's all worked out? Settings → About links to the science behind it.
  • Race courses: road riders can measure their own drag from recent outdoor rides with power (via intervals.icu). Lactic then checks itself by timing each of those rides from its own power, and tells you how close it came.
  • On a computer, Ride is now a tab in the top bar between Plan and Progress, and it stays highlighted while you're on it, so you can always tell where you are.
  • The iPhone screen stays on while it's showing a ride, whether the iPhone is running the trainer or showing the ride on your computer.
  • iPhone: rides no longer show up twice in Apple Health and Fitness, and rides that were saved twice before are cleaned up (Lactic keeps one copy).
  • Favorites now count everywhere: workouts you've saved yourself can go into your plan too, the AI coach can suggest and pick workouts from the library and your own (favorites first), and the coach's weekly picks no longer replace a favorite the plan already chose.
  • Plan: the day popup's "Use a workout…" menu now lists your favorites and your own workouts above the library. Your plan also mixes in workouts from the library that fit, alongside its own, with your favorites first.

This is Lactic Preview, a testing build, not a release. It's the latest main, rebuilt on every merge. Riders should use the latest release.

Lactic Preview installs beside Lactic as its own app (orange icon) with its own data, saved keys and Claude Desktop entry, so trying it never touches your real rides or plan. It checks this page for updates, so once it's installed every merge shows up as an update.

Mac: open the .dmg, drag Lactic Preview to Applications and open it (it's signed and notarized). Or in Terminal, in one go:

curl -fsSL https://raw.githubusercontent.com/blairj09/lactic/main/app/scripts/try-preview.sh | bash

Add a pull request number at the end (| bash -s -- 72) to try that pull request's build before it's merged (needs the GitHub CLI: brew install gh && gh auth login).