Progress log
Moveee Indoor versions
Moveee Indoor's own version history — the browser trainer world, shared rooms and route scenery, separate from the rest of the app. Currently on Moveee Indoor v0.4.32.
v0.3.69
My Cyclist: he breathes, he blinks, he hasn't shaved since Tuesday
2026-07-27- Improved Three small signs of life: the chest swells gently at a working breathing rate, the eyes blink every few seconds, and a subtle five-o'clock shadow sits over the jaw, chin and upper lip — baked into the head so it darkens whichever skin tone you pick. Together they finish the face's turn from mannequin to man in his thirties.
v0.3.68
My Cyclist: a real pedal stroke — ankles that work, knees that track
2026-07-27- Improved The feet finally pedal like a cyclist's: the shoe pitches through the stroke — heel dropping through the power phase, toes pointing down through the back of the stroke — following published ankling curves, phase-derived from each foot's position around the crank.
- Improved Knees now track over the top tube instead of flaring sideways: each knee is pulled toward its hip-to-foot plane, the way a fitted rider actually pedals.
- Improved A slightly heavier, lower brow and a squarer jaw push the face toward the intended look — a man in his thirties.
v0.3.67
My Cyclist: helmet on, shield shades, hair that follows your pick
2026-07-27- New The rider wears a proper road helmet again — a low teardrop shell in your jersey colour, straps down to the chin — and modern shield sunglasses (one big wraparound smoke lens, slim top bar, temple arms), translucent enough that the eyes still read behind the lens.
- New The Hair picker now actually changes the prototype's hair: buzz, short, messy, swept and ponytail are each their own shape, showing under the helmet rim, in your chosen colour.
- Improved The default rider is a fair-skinned young man with hazel eyes; every skin tone remains one tap away.
v0.3.66
My Cyclist: a real face, and a body that closes up properly
2026-07-27- Improved The prototype rider finally has a face — eyes with irises and lids, brows in your hair colour, a rounded nose with nostril wings, curved two-tone lips — set into a one-piece sculpted head with a real brow ridge, eye sockets, cheekbones, a jaw that tapers to a chin and a proper back of the skull, with the hair cap hugging it and ears set behind the mid-line. The sunglasses block is gone (it can return as an option).
- Fixed The waist is sealed: the bib shorts are now a closed volume and the jersey physically wraps over them like a real hem — the slit at the waist where you could see inside the torso is gone.
- Improved Neck and shoulders rebuilt: the neck is thicker, curves forward out of the shoulders and roots into the torso under a jersey collar; trapezius muscle now slopes from the neck down to each shoulder.
- Improved The hips are closed like a real body: glute cheeks bridge the pelvis into the thighs, a sacrum pad seals the lower back, and the torso and limb tubes are end-capped — the open hole behind the hip is gone from every angle.
- Improved Elbows ride softly bent instead of nearly locked, breaking down-and-back like a relaxed road posture, with an anti-lock that keeps them from snapping straight mid-stroke.
v0.3.65
My Cyclist: pick your bike's colour (plus an admin bone view)
2026-07-27- New The cyclist builder now paints your bike like a real paint shop: separate colour choosers for the frame and the fork (picker + one-tap swatches each), applied live on the preview. Only the frame and fork take paint — the chain, derailleurs, cassette, bars, wheels and pedals keep their own finish, and the saddle, seatpost and disc-brake calipers stay a proper near-black. Saved with the rest of your rider.
- New Admins get a 'Show bones' toggle on the cyclist preview: an X-ray overlay of the rig skeleton drawn over the model, for checking how the rider and bike are rigged.
v0.3.64
Moveee Indoor: distinct greens so the countryside patchwork actually varies
2026-07-23- Fixed Five kinds of grassland (meadow, grass, village green, common, dog park) were all painted the exact same green, so a patchwork of different fields read as one flat block. Each now has its own shade, and two built-up ground types that shared a colour were split too — the land quilt finally looks as varied as the fields that make it up.
v0.3.63
Moveee Indoor: mountains keep the odd crag, not just gentle green
2026-07-23- Fixed The last mountain change removed the vertical walls but went too far — it flattened away every steep rock face too, leaving uniformly gentle green slopes. Steep crags are back as an occasional feature (a real face here and there, as intended), while the ground between them still rises gradually and the constant cliffs stay gone.
v0.3.62
Moveee Indoor: the trainer actually reconnects after a drop
2026-07-23- Fixed When the trainer dropped mid-ride, only the very first reconnect attempt ran — if the trainer was not back within a second the ride stayed paused forever, despite the message promising it would resume. Reconnection is now retried on a growing backoff until the trainer returns. Also: disconnecting a trainer by hand no longer leaves a health-check timer running, and open (point-to-point) routes no longer waste map requests fetching the far end of the ride.
v0.3.61
Moveee Indoor: mountains that rise, instead of walling
2026-07-23- Fixed Mountain worlds on Just Ride were ringed with near-vertical walls of land right beside the road. The terrain now rises gradually — the mass of a mountainside comes from long, smooth swells over hundreds of metres, and the sharp rock faces that used to be everywhere are now the rare exception rather than a constant cliff. The steepest ground went from around 55° to about 24°.
v0.3.60
Moveee Indoor: fields, crops and a countryside quilt on Just Ride
2026-07-23- New The countryside on Just Ride is now a proper patchwork: farmland is the commonest kind of country, fields are laid in strips of adjacent plots each a different crop or cover, and crop fields are roughly five times more common than before — so a ride passes through a real quilt of greens, golds and ploughed earth instead of the odd lonely field.
v0.3.59
Moveee Indoor: lap counting on a loop
2026-07-23- Changed On a looping ride (any Just Ride world, or a circular route), the distance readout now counts around the lap and shows a Lap number once you cross the line — so a second time round reads "4.0/48 · Lap 2" instead of the confusing "52.0/48". Your total distance for the whole ride is on the readout's tooltip, and an out-and-back route with a finish is unchanged.
v0.3.58
Moveee Indoor: the elevation profile now looks 10 km ahead by default
2026-07-23- Changed The elevation profile on the HUD defaults to showing 10 km of road ahead instead of 5 km, so you see the shape of what is coming from further out. The +/- buttons still adjust it (1 km up to 20 km), and 10 km is now one of the steps.
v0.3.57
Moveee Indoor: sharing a mapped route to Strava no longer bounces
2026-07-23- Fixed Publishing a real-route ride to Strava could fail with 'velocity sample 1 is outside the supported range'. The route's GPX stamped its trackpoints to the nearest whole second, so on a dense map many points landed on the same instant and Strava read them as instant teleports at impossible speed. Trackpoints now carry millisecond timestamps, are spaced so the clock always moves forward, and coincident duplicates are dropped — so the ride uploads cleanly.
v0.3.56
Moveee Indoor: a richer, busier roadside on Just Ride
2026-07-23- New The countryside beside the road now has far more life and variety: more bushes, weeds, ferns, wildflowers and grass, from a bigger library of distinct plants (262, up from 180), scattered noticeably denser along the verge. It is tuned so the extra objects are the cheap kind — the number of trees stays about the same, so the frame rate holds while the roadside fills out.
v0.3.55
Moveee Indoor: rides are named for the session and the map
2026-07-23- Improved Saved Indoor rides are now named consistently — "Moveee Indoor ride - 4×8 min VO₂ max on center lj" — so your history and your Strava feed show which workout you did and which map you rode it on. Free rides read "Free ride", and a Just-Ride loop is named for its shape (Hilly loop, Mountain loop). Type your own name and it's kept as-is.
v0.3.53
Moveee Indoor: the sky follows the road up
2026-07-23- Fixed On a route that climbs high, the clouds used to stay at the height they were built at — so a mountain road eventually rode level with them and then above them, leaving a carpet of cloud below the bike. The whole cloud deck now rides with the road's elevation: each cloud keeps its designed height above a base that tracks how high you are, so there is always sky overhead. At sea level nothing changes, the deck lags a climb rather than being glued to the bike, and rolling terrain no longer pumps it up and down.
v0.3.53
Moveee Indoor: the forests come down out of the sky
2026-07-23- Fixed Floating forests, hopefully for the last time: on mountainous rides a third of the distant scatter hung in the air — the worst tree 107 metres up — because trees were planted at a height the terrain maths believed rather than the height the terrain mesh actually drew, and those two drift apart while a big world streams in. Every tree, bush and rock is now seated directly on the drawn ground itself, so what you plant on and what you see are the same surface by construction. Measured across a whole mountain ride after the fix: zero floaters.
v0.3.52
Moveee Indoor: drafting is real — sit in, save watts, slingshot out
2026-07-23- New Sitting in a wheel finally works, with savings straight from the published wind-tunnel and CFD studies: one rider's wheel at half a metre cuts your air resistance by about a third (+4.7 km/h at 250 W), a three-rider line by nearly half, and the middle of a ten-rider bunch by more than half — 36 km/h of solo effort becomes 46 in the group. The shelter fades naturally with the gap: still a quarter of a tow at two metres, nearly gone past ten. And it is read from where you actually are every moment, so attacking out of the bunch carries its shelter until your wheel truly clears the front — the slingshot — while getting dropped means watching the group ride away on less power than you are doing.
- New The pace groups themselves ride like groups now: a rotating bunch cruises faster than a lone rider at the same effort, joining one in the 3D world drafts and gaps exactly like the classic scene, and the group's advertised speeds reflect the shelter its riders share.
- New Weather is in the air, literally: a cold dawn ride is through denser, slower air than a hot midday one — about half a km/h between the extremes, the same physics as the altitude effect.
- Fixed Standing starts are honest: thrust is capped at what a rear tyre can put down before it spins or the front wheel lifts, so a 1000 W launch builds speed like a track sprinter instead of a motorbike. Spinning the wheels up also costs a little extra — accelerations are fractionally lazier, exactly as physics says.
v0.3.50
Moveee Indoor: the ride notices when your trainer is in trouble
2026-07-23- New Moveee now watches the trainer's connection and its data, and tells the difference between a real fault and you simply not pedalling. Slow data gets a quiet warning and the ride carries on; data that stops or arrives garbled marks the numbers untrustworthy and reconnects in the background, still without stopping your ride; only a genuine disconnect pauses it — and it resumes on its own the moment the trainer is back. Coasting at zero watts, a steady ERG effort and the odd dropped packet are all treated as perfectly normal, because they are.
v0.3.49
Moveee Indoor: a clearer, steadier start screen
2026-07-23- Fixed Choosing "Ride a route" or "Choose workout" no longer opens a second popup on top of the first — the new one replaces it. Backing out returns you to the chooser, and picking a route goes straight on to the loading screen without the chooser flashing behind it.
- Changed Every popup in the start flow is now the same width, so stepping from one to the next no longer resizes the card under your pointer.
- New Custom artwork for the ride modes — a world with a road across it, a route running to a pin, and a set of interval bars — and the terrain choices are now drawn as the profile you would actually ride: a flat line, a rolling one, repeated climbs, one long ascent. All vector, so they stay sharp at any size.
- Changed Clearer wording on the three modes: "Free ride the virtual world", "Pick a real route — even your saved one", and "Follow targets (optionally ERG mode)".
v0.3.48
Moveee Indoor: the ride modes sit side by side
2026-07-23- Changed "How do you want to ride?" now lays its options out in a row rather than a stack, so they read as a choice between siblings instead of a list to work down. Each option is a tile with its icon, name and caption; on a narrow window they fold back to the old rows.
v0.3.47
Moveee Indoor: connect your trainer without leaving the ride
2026-07-23- New The settings menu now has a Trainer row beside Heart rate, so you can pair a trainer at any point — including in the middle of a ride you started without one. Connecting takes over from the self-drive automatically, and the row shows your trainer's name once it is on, so the menu tells you what is actually connected.
v0.3.46
Moveee Indoor: riding with friends is out of the picker for now
2026-07-23- Changed "Ride with friends" no longer appears when you choose how to ride. Multiplayer itself is untouched and still works — an invite link still drops you straight into a room, and everything inside a room behaves exactly as before. Only the way in from the opening screen is hidden, until it is ready to be offered.
v0.3.45
Moveee Indoor: know every climb, and read the HUD at a glance
2026-07-23- New Climbs are now found automatically on any route, and while you are on one a panel shows exactly where you stand: how far up you are, metres climbed, metres still to the top, and how much road is left. A climb starting within 600 m is announced before you reach it, and the panel stays out of the way entirely on flat ground.
- New The elevation profile has a zoom: choose how far up the road it looks, from 1 km to 20 km, defaulting to 5 km.
- Changed The profile now carries a real elevation scale down its right-hand edge — round heights with faint guide lines — instead of the two numbers that sat on top of the graph. You can read the actual height of the road you are riding, and the distance figure no longer repeats the zoom control beside it.
- Changed The mini-map and elevation profile are 25% bigger on desktop, and the real map no longer overlaps them (it had been overlapping the column by 64 pixels).
v0.3.44
Moveee Indoor: the same physics on every road, for every rider
2026-07-23- Fixed Riding a gravel route high in the mountains and then dropping into a free ride left the mountain behind but kept its road and its thin air: the invented scenery inherited gravel and altitude from the ride before it. Every world now states plainly what is under your wheels and how high you are, so nothing carries over. A route uses its mapped surface and real altitude; a free ride is an ordinary road at sea level.
- Changed Riders with nothing filled in on their profile get the full physics too — surface, air, drivetrain and gravity all apply, worked out for an average rider until you tell Moveee your height and weight.
- New The road surface under your wheels is now part of the physics. Routes carry OpenStreetMap's surface data segment by segment, so when the tarmac turns to gravel the ride does too: rolling resistance rises, you slow by several km/h at the same power, and your smart trainer's resistance follows — you feel the road roughen, on exactly the stretch where it really does. Cobbles, compacted forest roads, dirt and grass all get their own honest figures.
- New Air gets thinner as you climb, and the ride now knows your real altitude — about 9% less air per 1000 m, exactly the standard-atmosphere figure. The same watts carry you visibly faster at altitude, and an alpine descent runs away the way it does outdoors. The trainer's air resistance thins with it.
- New A drivetrain loss of 2.5% — what a clean chain actually costs — now sits between your power meter and the road, as it does on every real bike.
- Fixed The wind the world simulates now reaches your trainer: ride into a gust and the pedals lean back at you the moment the HUD shows it. And a unit error in what was sent as the trainer's air-resistance figure — half the correct value since the last change — is corrected.
- Fixed The ride itself was still being worked out for an average rider. Your height, weight and riding position were feeding the speed estimates and the trainer, but the world you actually ride through kept its own fixed figures — one drag area for everybody, a slightly grippier road and a heavier bike. So the personal numbers never reached the ride. The world now asks who is on the bike, and there is a single answer used everywhere: your drag area, your weight plus your bike, one rolling resistance.
- Changed That means everything the ride already did well — carrying your momentum, coasting when you stop pedalling, headwinds and tailwinds, sitting in a wheel — is now happening to YOU rather than to a stand-in. A bigger rider carries more speed downhill and pays more into a headwind, exactly as they would outdoors.
- Fixed Stopping could leave the cyclist drifting away from the bike and floating through the world. The pose that lifts the rider onto the saddle each frame recorded how to undo itself only after all the arm and foot solving had finished — so if any of that failed while stopped, the lift was never taken off and was added again on the next frame, and the next, until the rider had climbed out of the scene. The undo is now recorded the instant the lift goes on, and a bone that comes back as an impossible number drops that frame's adjustment instead of poisoning every frame after it.
- Fixed Turning off "Drive itself" no longer launches you down the road: the drive speed (up to 400 km/h) was handed straight to the coasting physics, so the world kept flying past with no one pedalling. Leaving the drive now hands over at a speed a rider could actually be doing.
v0.3.40
Moveee Indoor: turning the resistance down no longer makes you faster
2026-07-23- Fixed Your climb-resistance setting was making you quicker up hills, which it should never do. It exists so a brutal gradient can be ridden without cracking — it is gearing, not terrain. It now changes only how hard the trainer pushes back at your legs; the hill you are actually climbing, and therefore your speed, is the one the map drew. Ease the resistance off on a 15% wall and it will feel kinder, take exactly as long, and cover exactly the same ground.
- Changed Your speed is now worked out by Moveee rather than read off the trainer. A trainer reports the speed its own flywheel produces, which reflects whatever resistance it was asked for — so with the dial turned down it would claim you were flying up a climb you had merely made easier. Your watts, pushed against the real road, decide your speed. Everyone now rides the same physics, whether on a smart trainer or a plain power meter.
- Fixed Gravity was missing from the ride's own speed model — it only knew about air and rolling resistance, so as far as it was concerned a wall was as fast as a flat road. On a 10% climb at 300 W it thought you were doing 39.5 km/h; the truth is 12.2. If you ride with a smart trainer you never saw this, because your trainer worked out the hill itself. But riders on a plain power meter climbed at flat-road speed, and the pace group did too — so on every climb your virtual companions simply rode away from you. Both are now correct.
- Changed Freewheeling downhill works properly too: stop pedalling on a descent and you now roll, gathering speed to a realistic terminal pace, instead of stopping dead.
- Changed The hill the screen uses is the same one your trainer is given — including your climb-resistance setting. At the default 60%, a 10% road is ridden as 6% by both, so the effort in your legs and the speed on the screen keep telling one story.
v0.3.38
Moveee Indoor: the message boards speak with one voice
2026-07-23- Changed Every roadside message board now shares a single black background instead of each carrying its own colour. A row of purple, red, teal and white panels read as adverts for different products; on one dark ground they read as one voice, and the message is the only thing that changes. Two slogans whose lettering had been picked for a white panel were lifted to a lighter shade so they stay readable — every board's text is now checked to clear a proper contrast floor against the black.
v0.3.37
Moveee Indoor: the trainer now pushes back with your real air resistance
2026-07-22- Fixed Your trainer was being told to simulate far more air resistance than the world was actually drawing — about two and a half times your real figure — so the pedals felt heavier than the speed on screen suggested. It now gets your own air resistance and rolling resistance, the very same numbers behind the speed you see, so the effort in your legs and the speed on the screen finally tell the same story. Flat riding will feel noticeably easier than before, and correctly so.
- New Your weight is now sent to the trainer when you pair, so a climb loads it by how heavy you actually are. Not every trainer accepts this — where it doesn't, it keeps using the weight set in its own app, exactly as before.
v0.3.36
Moveee Indoor: your speed is now worked out from your own body
2026-07-22- Changed How fast your watts carry you is now calculated from your real height and weight rather than one average rider for everybody. Air resistance is what decides speed on the flat — and how much air you push depends on how big you are — so a tall rider now has to work harder for the same speed than a small one, exactly as outdoors. Your weight is also counted properly as you plus the bike. If your profile has no height or weight yet, nothing changes: it falls back to the same average rider as before.
- New Riding position is now part of the calculation. Today you always ride on the hoods, so nothing looks different yet — but the drops, the tops and an aero tuck are already defined, ready for when you can change position mid-ride.
- Changed A ride now takes three photos at most, and takes them at different moments each time: one ten seconds in, one somewhere in the first half hour, and one somewhere in the following hour. The two later moments are rolled fresh for every ride, so riding the same road twice doesn't hand you the same postcard. A short ride simply takes whichever of the three it gets to.
- New On the finish card the photos are numbered in the order they'll be saved, with arrows to move any of them earlier or later — so you decide which one goes up first — and an × to drop one you don't want.
- Changed Every photo is now squeezed to under 200 KB. Quality is eased down first and the picture only shrunk if that isn't enough, so an ordinary in-world frame keeps its full size and sharpness and only a busy one gives anything up.
v0.3.34
Moveee Indoor: see your ride photos before they leave, and drop the ones you don't want
2026-07-22- New The finish card now shows every in-world photo your ride took, and each one has a remove button — so nothing you don't like ends up alongside your ride. A ride also takes more than one photo now: the first after a minute, then one every five minutes, up to six, so a longer ride comes back with a few different places instead of a single shot.
- Changed Clearer wording on the Strava option: it now simply reads "Publish this Virtual Ride to Strava." The photos have their own section that says plainly what happens to them — they are saved to your device when you publish, because Strava's API does not accept photos, so you add them there yourself.