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.85.
v1.19.25
Indoor: sea reaches right up to the coast
2026-07-21- Improved The water still stopped a little short of the shoreline. It now fills right up to the coast, so the sea meets the land where OpenStreetMap says it does instead of leaving a strip of dry ground at the water's edge.
v1.19.24
Indoor: a smoother coastline
2026-07-21- Improved The sea's edge followed a coarse 80 m grid, so the coastline looked like a blocky staircase rather than the real shore. The grid is now twice as fine, so the coast hugs the OpenStreetMap shoreline about twice as closely — at no real cost, since the water surface is a tiny part of the scene.
v1.19.23
Indoor: a cockpit first-person camera
2026-07-21- New Alongside the ride-along POV there's now a Cockpit camera — the view a rider actually has, sat at head height looking down over the bars, so you see your own arms and hands, the handlebars and the front wheel with the road running out ahead. It joins the riding cameras (Chase, Chase far, POV, Cockpit) and is an admin control like the other angles.
v1.19.22
Indoor: the sea sits at the right height now
2026-07-20- Fixed On coastal routes the sea could sit far below the shoreline — the water looked like it was hovering out and down from the land, sometimes vanishing until it 'snapped back'. The sea level was being dragged down by invented elevation far from your route. It's now anchored to the real coast height measured along the road you ride, and the sea is rebuilt fresh for each route instead of inheriting the last one's.
v1.19.21
Indoor: a ride-along POV camera
2026-07-20- New There's a new first-person camera for the indoor world — it rides on the saddle at eye height and looks down the road ahead, so you get the ride-along view instead of watching the bike from behind. It sits with the other riding cameras (Chase, Chase far, POV) and, like the rest of the camera angles, is an admin control.
v1.19.20
Rides: detected intervals are editable, and more of them are caught
2026-07-20- Improved Interval detection now catches lower efforts too — not just tempo and threshold but sweetspot blocks like a sustained 250 W on a 300 W-threshold rider. The bar is anchored to your FTP (around tempo) rather than the ride's average, so efforts are caught even when they make up most of the ride, and any effort held above it for 15 seconds counts.
- Fixed Auto-detected intervals can now be edited. Detection runs once when a ride first opens (and again only when you press Auto-detect), and the efforts it finds become ordinary intervals you can move, resize or delete. Before, they were re-detected on every reload, so any change you made sprang back — now your edits stick.
v1.19.19
Rides: tempo and threshold blocks are detected as intervals now
2026-07-20- Improved Interval detection on the ride page now catches sustained tempo, sweetspot and threshold work — not just the sharpest peaks. Before, on a hard ride the detector measured 'hard' relative to the rest of the ride, so a long block at threshold became the ride's normal and was missed. It's now capped at a tempo line anchored to your FTP, so any effort held above ~tempo for 15 seconds or more is flagged, however hard the rest of the ride was. A 40-minute 305 W block that showed nothing before is now picked up in full.
v1.19.18
Dev: reloads always serve the latest code
2026-07-20- Fixed In development the browser could keep running an old version of the app's JavaScript after a change, so a plain reload showed no difference until a hard refresh. Development HTML pages are now sent no-store, so every reload picks up the current code.
v1.19.17
Indoor: the sea reaches the coast now
2026-07-20- Fixed On coastal routes the water stopped short of the shoreline, leaving a thin strip of raised land between the sea and the real coast. The sea is classified on an 80 m grid, and a grid square straddling the coast counted as land — so the water fell up to half a square short. It now bites back to the actual coastline, so the sea meets the shore instead of hovering offshore.
v1.19.16
Indoor: more detail and variety on the buildings
2026-07-20- New Procedural buildings wear more relief now, and wear it differently from one another. A raised base course runs along the foot of the wall, grander buildings get raised strips up their corners and a moulding dividing the ground floor from the ones above, pitched roofs get a capping tile down the ridge, and chimneys get a clay pot. What each building wears is decided by what it is — a civic hall or a block of flats comes out with corners and a floor band, while the shed next door stays plainly clad — so a street reads as a mix of buildings rather than one repeated. It all rides on the detail a building already carried, so a fully dressed building is no more expensive to draw than a bare one was.
v1.19.15
Indoor: the drop log is readable now
2026-07-20- Fixed The "why frames dropped" log was cutting its lines off, so you couldn't read the part that mattered. The text is smaller, the panel is wider, and it now scrolls sideways as well as down — so you can drag across and read the full breakdown instead of losing it to an ellipsis.
v1.19.14
Indoor: real bridges and tunnels, built from the map
2026-07-20- New Where the real map says a road is carried on a bridge, you now ride over an actual bridge instead of flat tarmac — with a deck, parapets and piers standing in whatever the road spans. The kind of bridge follows the real one: a masonry crossing gets stone arch rings, a steel one gets a through-truss you ride inside, a long motorway crossing gets a slender-piered viaduct, a footbridge gets timber planks and a handrail, and a big span gets towers with cables and hangers.
- New Tunnels are built too, with a proper portal at each mouth. Alpine avalanche galleries are open down the valley side on pillars rather than being a closed bore, so you keep the view out as you ride through.
- Improved Each structure is welded into a single object, so even a long viaduct costs one draw call, and the number built per stretch of map is capped to protect the frame rate.
v1.19.13
Indoor: the drop log now names where the triangles come from
2026-07-20- Improved When the frame rate drops because of triangle load, the log now says which models are responsible — for example "20M triangles — 8.1M nature/pine (57%), 3.2M citypack/city_buildings (23%)". Copies of the same model are counted together, including the instanced ones like trees and crops, so you can see at a glance which asset is costing you the frame rate.
v1.19.12
Indoor: a log of why the frame rate dropped
2026-07-20- New Next to the FPS counter there's now a small log that explains every dip below 50 fps — and where on the route it happened. Instead of just seeing the number fall, you get the likely reason: still building scenery, too many separate objects, triangle load, render scale, or CPU. A run of slow frames from the same cause collapses into one line with the worst reading, so it reads as a short history rather than a wall of numbers. Admin only, and it appears with the FPS counter.
v1.19.11
Indoor: dropped the banner over the HUD
2026-07-20- Changed Removed the "Click any object to inspect & fix it" banner that sat above your ride metrics in the object-review tool. Messages during a ride appear below the metrics bar, so nothing covers your power, time and speed.
v1.19.10
Fixed: deleting two routes in a row
2026-07-20- Fixed In your route library, deleting a route left the page in a state where the next delete did nothing until you refreshed. Now you can delete several routes one after another without reloading. Saving a route's name or sharing settings was affected by the same problem and is fixed too.
v1.19.9
Indoor: retired another city building
2026-07-20- Changed One more city-pack building has been withdrawn after review, so it no longer appears anywhere in the world. The rest of that pack is unaffected.
v1.19.8
Indoor: click the real map to jump there (admin)
2026-07-20- New Admins can now click anywhere on the real map to jump straight to that part of the route — handy for checking a junction or a stretch of road without riding to it. The click only chooses where along the road to go: you always land on the road itself, never beside it, even if you click well off into a field.
v1.19.7
Indoor: the Global light sliders actually work now
2026-07-20- Fixed The Global light sliders moved but the world never changed — every slider was silently falling back to its default value instead of reading where you'd dragged it. Sun, sky, reflections and exposure now all take effect live as you drag, and the percentage readouts update with them.
v1.19.6
Indoor: Global light sliders now change the world as you drag
2026-07-20- Fixed The new Global light sliders moved but nothing happened on screen unless the world mood was set to Cycle. The lighting is only recalculated while the day/night cycle is animating, so on a frozen mood — Golden light, Dawn, Night — your slider change had nowhere to land. The lighting is now re-applied the moment you move a slider, whatever mood you're in.
v1.19.5
Changelog entries are numbered by the tool, not by hand
2026-07-20- New A changelog task now works out the next version itself and appends the entry under a file lock, so two sessions shipping at the same time can no longer take the same version number.
- New A check task validates every changelog: that it parses, that no version is used twice, and that each change has text.
v1.19.4
Indoor: Global light controls in settings
2026-07-20- New New "Global light" panel in the admin settings with four live sliders — Sun, Sky/ambient, Reflections and Exposure — so you can trim the whole world's lighting and see it change as you drag. They ride on top of the day/night cycle, so dawn still looks like dawn; the trim just shifts the level. Your settings are remembered, and there's a Reset button.
- Fixed The new reflection environment was lifting the brightness of the whole world, not just the metal objects it was meant to fix. Reflections now default to a low setting that keeps the world at the brightness it had before — and if you want it flatter still, drag Reflections to zero.
v1.19.3
Indoor: no more objects stuck in the dark
2026-07-20- Fixed Some objects in the library rendered almost black and refused to brighten no matter how much light you added. They were exported as fully metallic, and a metal doesn't light up — it only shows what it reflects, and the world had nothing for it to reflect. The world now has a proper sky-and-ground environment for materials to catch, and imported objects are clamped out of that unlightable range, so every object in the library responds to light and to the Lightness slider.
v1.19.2
Indoor: no more spikes in the landscape
2026-07-19- Fixed The real elevation data occasionally contains a bad reading, and a single bad point was rendering as a sharp needle stabbing out of an otherwise natural hillside. Those spikes are now detected and smoothed away before the terrain is built. Real hills, ridges and steep slopes are untouched — only the lone bad points that can't be real landscape get flattened.
v1.19.1
Indoor: gravel roads are as narrow as they really are
2026-07-19- Improved Every mapped road used to be drawn at a fixed width for its type, so a gravel farm track came out as wide as a paved road. Gravel and unpaved ways are now drawn narrow — and where OpenStreetMap actually records a road's width (or its lane count), we use that real number instead, so a genuinely wide gravel road still comes out wide. Paved roads are unchanged for now; they'll follow once this proves out.
v1.19.0
Indoor: crop fields are actually full now
2026-07-19- Improved Crop fields used to spread a thin scatter of plants across the whole polygon, so a field read as a few clumps on grass. Now the crop tufts overlap into solid cover and the per-field budget is much higher, so a field you ride past looks like a real, fully-planted field. Framerate is protected by filling distant fields more thinly — you can't see the gaps far away — and by a per-chunk ceiling, so the coverage costs nothing where it doesn't show.
v1.18.9
Indoor: farmland grows more than one crop
2026-07-19- Improved Farmland used to be wheat, wheat and more wheat. Now each field is planted with one crop picked per field — wheat or corn — so neighbouring fields differ and the countryside reads as real, varied farmland. A field always keeps its own crop, and it's a one-line change to add more crop types as you supply them.
v1.18.8
Indoor: forest fills right up to the road
2026-07-19- Improved Roadside woods kept an 11 m bare band along the road, so a forest you rode past looked half-empty near the tarmac. Trees now fill to within 7 m of the road (still clear of it), so a wood by the road reads as a proper wood instead of thinning out just where you can see it.
v1.18.7
Indoor: pavements hug the curves
2026-07-19- Fixed City pavements are laid from rigid kerb pieces, and on a bend a full-length piece chords straight across the curve and drifts off the road edge. Now the pavement automatically switches to short half-length pieces through every curve, so it follows the bend cleanly — while straights keep the longer pieces. Sidewalks line up on curves now, not just on the straights.
v1.18.6
Indoor: power lines cross the road and stop breaking up
2026-07-19- Fixed Overhead power lines used to stop dead wherever a pole couldn't stand — at a road, a railway or rough ground — so the wires randomly cut out and never crossed the road. Now the pole is skipped there but the cable carries on, sagging across the gap and over the road like a real line, so a run stays connected end to end.