Progress log
What we've been building
Every version of Moveee and what changed in it — updates, fixes and improvements as they ship. Currently on v1.21.38.
v1.8.17
Wind arrows now cover the whole long route
2026-07-08- Fixed The route builder's wind overlay no longer stops partway through very long routes. Moveee still keeps the weather request compact, but it now spreads wind sample points across the entire route instead of only using the first chunk.
v1.8.16
Power-profile headline strip now fits eight efforts in one desktop row
2026-07-08- Improved The top power strip on the power-profile page now includes 3-minute power and is packed into eight equal desktop columns, so all headline efforts sit in one row across the page instead of breaking into multiple rows.
v1.8.15
Power-profile headline boxes now form one full-width desktop strip
2026-07-08- Improved The seven power boxes at the top of the power-profile page now switch to a true seven-column layout already at desktop width, so together they fill the full row of the page container as one compact strip.
v1.8.14
Power profile now shows two rank estimates
2026-07-08- New The 'Where you rank' panel on the power-profile page now shows both a weight-aware estimate from FTP W/kg and a pure absolute-power estimate from FTP watts, so you can see both your climbing-style ranking and your raw-engine ranking side by side.
v1.8.13
Power-profile headline boxes are tighter on desktop
2026-07-08- Improved The top power boxes on the power-profile page have been compacted further, with tighter spacing and smaller internals, so the whole strip reads cleanly as one desktop row.
v1.8.12
Critical Power fit notes now stay out of the way
2026-07-08- Changed The long fit-quality note under Critical Power & estimated FTP has been moved into the info tooltip, so the card stays cleaner while still keeping the explanation one hover away.
v1.8.11
The power-profile header is cleaner
2026-07-08- Changed The manual Rebuild button is gone from the power-curve header. The page now stays focused on the curve itself and your ride-management tools instead of showing an extra control there.
v1.8.10
Power-profile headline boxes now stay in one compact row on desktop
2026-07-08- Improved The top power boxes on the power-profile page are now tighter and laid out in a single desktop row, so all seven durations stay visible together instead of wrapping into a second line.
v1.8.9
Power-curve points open rides, the headline powers are fuller, and TSS now agrees
2026-07-08- New On the power-curve hover, the ride name behind each best effort is now a direct link, so you can jump straight into that activity from the graph.
- Improved The power-profile headline boxes now show the durations riders actually use most for reading a curve: 15 seconds, 1 minute, 5 minutes, 8 minutes, 12 minutes, 20 minutes and 30 minutes.
- Fixed Completed-session TSS now follows the same load math everywhere instead of mixing a synthetic estimate in one place and the real ride's load in another. When a real activity exists, Moveee uses its imported TSS; otherwise it falls back to the standard NP/FTP-duration formula.
v1.8.8
Power profile management is now easier to scan — and you can search all rides
2026-07-08- Improved The best-efforts grid now sits directly under the power curve, so the chart and the rides behind each duration stay together instead of being broken up by management panels.
- New The ride-management area at the bottom of the power-profile page now includes search across all your power rides by name, so you can quickly find a specific file and exclude or re-include it without hunting through whatever the page happened to show.
v1.8.7
Power profile now catches stacked glitches better — and you can exclude bad rides yourself
2026-07-08- Fixed The power-profile cleaner now peels suspicious efforts in passes instead of stopping after the first bad ride. That means stacked glitch files are far less likely to leave a second fake peak behind in your curve, FTP estimate or power-duration bests.
- New The power-profile page now shows which rides are shaping your current curve and lets you exclude any suspicious one with a tap. Excluded rides are ignored in the curve, FTP estimate and related metrics until you include them again.
v1.8.6
Interval preferences now match everywhere — and fitness trend has proper date presets
2026-07-08- Changed Your interval preferences on onboarding and on your profile now match exactly — same effort options, same labels, same meaning. They're now clearly treated as soft preferences: Moveee leans toward the efforts you enjoy, but it doesn't ban other work just because you left a chip unticked.
- Improved The plan engine now actually reads those interval preferences as one more input when it picks sessions, instead of ignoring them entirely. That means your preferred efforts can show up more often when they still fit the goal, phase and route demand — without overriding the training logic.
- New The Fitness & Form chart now has proper range presets: Last 30, 90 and 180 days, This year, Last year, Last 3 years, All time, plus custom dates.
v1.8.5
Strava imports and your first power curve now run automatically in local dev
2026-07-08- Fixed Connecting Strava on local development could leave your ride import stuck waiting for a Sidekiq worker that wasn't running. Moveee now runs those background jobs in-process by default in development, so your first import, auto-sync and power-profile build actually start as soon as you connect.
- Changed The empty power-profile screen no longer asks you to tap 'Build from my rides'. Your first power curve now builds automatically from your imported Strava rides, so the page simply waits for the data to arrive.
v1.8.4
Your owner Gmail is always treated as admin
2026-07-08- Fixed The owner account blaz.perus@gmail.com is now always recognised as an admin, even on a fresh sign-in that hasn't had a manual database flag set yet. That means admin-only areas, unlimited plan-generation quotas and other owner-level tools stay available immediately.
v1.8.3
A blocked day's training load moves to the rest of your week
2026-07-07- Improved Blocking a day used to just drop that day's training load — the week quietly got lighter. Now the plan redistributes it across your other training days, in the same proportion it already uses (your long ride still carries more than a recovery spin), so a day off doesn't shrink the week's real training stimulus.
v1.8.2
Never a hard day right after a hard day
2026-07-07- Fixed Generating or regenerating a plan could still hand you a hard session today even if you'd genuinely gone hard the day before — the weekly template only knew what IT had planned, not what you actually rode. Now the plan checks your real rides from the last two days, and if one was truly hard, today's session eases to endurance instead of stacking on top. This applies to every plan, not just adaptive ones — it's a baseline safety check, not a preference.
- Fixed The AI coach's automatic easing (for adaptive plans) used to only catch overreached VO₂ and threshold days — a hard tempo day slipped through untouched. It now eases any hard day (VO₂, threshold, or tempo).
v1.8.1
Workouts finally look like their name — and Tuesdays actually vary
2026-07-07- Fixed The graph now matches the workout's name. Sessions like Criss-cross, over-unders, floats, pyramids and 30/15 micro-intervals were being drawn as flat blocks because the library only stored “N reps at one power” — so a criss-cross looked identical to a steady effort. Every shaped session now draws its real structure (a criss-cross actually waves between 105% and 120%, a float surges then settles), so what you see is what you'll ride.
- Improved Your hard days now genuinely vary. Because the sessions were stored flat, different names collapsed to near-identical workouts — so week after week of Tuesdays felt the same. Now the rotation moves through genuinely different sessions within the right effort band for your event (sustained threshold reps for a long climb, not 30-second micros), and each one is its own workout.
- New When the AI coach designs or adjusts a session, the blocks and timings are now correct by construction — it describes the work and a single deterministic compiler builds a valid, safe session (warm-up, the real shape, cool-down, intensity capped). It can't produce a broken or unsafe workout.
v1.8.0
Smarter engine: built around your Critical Power and your event
2026-07-07- Improved Your plan now anchors to your Critical Power from the last 90 days rather than a single FTP number — and it reads that curve conservatively, stripping out freak power spikes, so a fluke file never inflates your targets. It looks at both your long-term potential and where you are right now.
- Improved On a race plan the engine now trains the event's actual demand. If your goal is a 2×15-minute climb, it picks the ~15-minute reps that make you best at exactly that, instead of generic hard days.
- New When you build a plan you're now asked whether you ride once or twice a day. Pick twice and a long enough endurance day splits into an AM and PM ride — but a session that would only become two token 30-minute rides stays a single hour, as it should.
- Improved The AI coach review can now push you harder, not just back you off. When you're fresh and absorbing the work, it can raise a day's intensity or add volume — still guard-railed: one level at a time, capped per session, and never next to a hard day or on a recovery week.
v1.7.09
Block days you can't train
2026-07-07- New You can now block a day on the performance calendar when you know you won't be able to train — hover a future day and hit the ⊘ button. The day is marked Unavailable, any session planned there is cleared, and it's greyed out so nothing lands on it. When you generate or regenerate a plan, the engine skips your blocked days entirely. Changed your mind? Tap the day's undo button to open it back up.
v1.7.08
Expand any week on the plan page to see its sessions
2026-07-07- New On the plan page, each week now expands to show the sessions inside it — tap a week to reveal its day-by-day workouts (name, duration, TSS, and a tick on the ones you've completed), and tap again to collapse it. Weeks start collapsed for a clean overview, and each session links straight to its workout page.
v1.7.07
Set a cadence when you build an interval
2026-07-07- New The interval builder now has a Cadence field in the block editor — set a target rpm on any block (say 55 rpm for a big-gear strength rep, or a fast spin-up) and it's saved with the workout and shown on the graph. Leave it blank and the block just uses the zone default (~90 rpm).
v1.7.06
Target cadence on the workout graph
2026-07-07- New Every workout graph now shows the target cadence next to the watts — so on an endurance-plus-cadence ride you can see you should be spinning ~90 rpm, and on a strength drill like SFR you see the 50 rpm it's actually asking for. The rpm reads off each block (a low-cadence or big-gear session picks up its real cadence from the workout; other efforts use a sensible self-selected target — ~90 rpm through the aerobic zones, a faster spin for VO₂). It appears on the bars themselves — including recovery spins and warm-ups — and in the hover readout everywhere alongside time, watts, %FTP and W/kg.
v1.7.05
Short intervals show their number and timing on the graph
2026-07-07- Fixed Very short efforts — a 30-second sprint or a 1-minute VO₂ rep — were too narrow to fit a label, so the graph showed the bar but no numbers. Now those slivers carry their target watts and duration in a smaller horizontal label (e.g. "40s" over "300 W"), so every hard rep is labelled. Wider blocks keep the full-size caption; the only bars left blank are the tiniest recovery blips, whose numbers are still in the hover readout.
v1.7.04
Fresh sessions, and swap any workout for a similar one
2026-07-07- Fixed Generating a plan no longer gives you almost the same sessions every time. The engine was fully deterministic — same settings, same plan — so it always led with the same handful of workouts. New plans now start from a random point in the library, so two plans built from the same goal and availability pull genuinely different sessions from the 30-odd threshold and VO₂ options.
- New Every planned interval session now has a "Change for similar" button (in the day popup and on the workout page). One tap swaps it for a different library session of the same type and comparable load — so it still fits your week (same slot, similar TSS, same effect on the days around it) but gives you a fresh structure. Tap again for another.
v1.7.03
A tidier workout popup
2026-07-07- Changed The quick workout popup now just shows the session graph — the block-by-block %FTP → watts targets table has moved to the full workout page ("Open full page"), where it sits in a collapsible "Targets" panel you can open when you want the numbers.
v1.7.02
Calendar plan header points to the plan page
2026-07-07- Changed The "Regenerate" button on the Perform calendar's plan header is now a "See more" link that opens the plan's own page. Regenerating a plan in place has been removed.
v1.7.01
Every session warms up and spins down
2026-07-07- New Every planned workout now opens with a proper warm-up where the power builds, and closes with a cool-down / spin-out where it drops — even the easy endurance and recovery rides, which used to be one flat block. Warm-ups and cool-downs are held between 5 and 10 minutes, scaled to the length of the session.
v1.7.0
Your ride, matched to what you had planned
2026-07-07- New When a ride lands from Strava on a day you had a session planned, the two are joined: open the ride and a new "Planned session" card shows what you were meant to do — its profile graph, planned vs actual TSS, and a verdict (On plan / Overreached / Under target) — right there with your ride graph, map and stats.
- New If you rode twice in a day (say a long ride and a short spin), we pick the MAIN ride — the longest, most loaded one — as the one that counts against the plan, so a coffee spin doesn't shadow your real session.
- New Overreaching now feeds your plan: ride much harder or longer than planned on an adaptive plan and we automatically ease your next hard day so you absorb it — no need to log how it felt first.
- Changed Generating a plan now drops you on the Perform calendar at today — where this week's sessions are — instead of jumping months ahead to your race or peak. Same when you build a plan from a race page.
v1.6.32
Smarter interval detection + graph polish
2026-07-07- Fixed Auto-interval detection now actually finds your efforts. It used to set the bar at 1.6× the ride's median power, which on a tempo-heavy ride put it above your real threshold efforts — so it found nothing. It now measures how far an effort stands out from the ride's spread (median + IQR), catching sustained threshold and VO2 blocks it was missing before, while still ignoring steady riding.
- Improved Move or resize an interval and its colour now updates live to the zone of its new average power — no page refresh needed. Drag an effort onto a harder stretch and it turns from green to blue to orange as you go.
- Fixed The hover readout (distance + time, top-right of the graph) no longer gets clipped off the edge on long rides — a time like 1:40:28 now sits on a small chip that stays fully inside the graph.
v1.6.31
Workouts on tidy 15-minute lengths
2026-07-07- Improved Planned workouts now come out on neat quarter-hour durations — 1h45, not 1h41. Rides scale to the nearest 15 minutes, and structured sessions (like 5×6 or 4×8) get there by nudging only the cool-down, so the actual efforts are untouched.