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.0
Moveee Indoor: procedural low-poly foliage — huge grass & weed variety
2026-07-21- New Roadside grass, weeds, small bushes and wildflowers are now generated on the fly in a chunky low-poly style — over 170 distinct plants (grasses, small and big weeds, bushes, field bushes, flowers and ferns) so the verges look varied instead of the same few models repeating.
- Improved The new foliage carries no textures and only ~38 triangles per plant, and each roadside stretch draws from a fresh mix, so the greenery is far lighter on your device while looking richer.
v0.2.97
Moveee Indoor: rivers are cut into the ground
2026-07-21- Changed Rivers now sit in a real carved bed. The ground itself is lowered along a waterway — deepest at the centre, easing back up to the natural land on each side — so the terrain, the water and anything standing on the ground all dish down into the channel together, instead of a flat blue ribbon lying on top. The water gets genuine depth, with the banks formed by the sloping ground rather than a painted-on shoulder. Only rivers and canals are cut; small streams and ditches stay flat.
- Fixed The carved bed is held well clear of the road: within a few metres of the tarmac the ground is never lowered, so a river crossing dips under the road as a culvert and no part of the bed can ever undercut or show through the road surface.
v0.2.96
Moveee Indoor: the road network needs land under it too
2026-07-21- Fixed Roads, tracks and paths no longer draw out over the void. The surrounding road network is read from OpenStreetMap far past where the terrain is built — measured on the Izola route, roads reach 1.6 km, rail 2.2 km and paths beyond the land — so a whole road or a length of track used to hang in mid-air out where there is no ground. They are now held to the land like everything else; a road that only just leaves the terrain keeps its near stretch, while one entirely in the void is dropped.
v0.2.95
Moveee Indoor: deeper river beds
2026-07-21- Changed River banks are deeper now. Instead of a low shoulder, each side rises from the water up a steep earthen cut bank to a crest well above the surface, then falls gently away to the surrounding ground — so the water reads as sitting down in a bed rather than laid flat on the land. The bank height scales with the river, so a stream keeps a shallow lip while a big river gets a real, tall bank. (The water surface itself can't be dropped below the land without carving the terrain grid, which is coarser than a river is wide; the depth is carried by the raised banks instead.)
v0.2.94
Moveee Indoor: bridges match the water, rivers get earthen banks
2026-07-21- Changed A bridge over a river is now built to the water's real width, using the same widened river size the ribbon draws, so the deck reaches bank to bank instead of stopping short over open water.
- New Rivers now have banks. Each side of the water eases down from the land to the river with a low earthen shoulder — tucked just under the water's edge, up over a soft crest, then sloping back out to meet the ground — so the water sits in the land rather than lying flat on top of it. The shoulder scales with the river, so a narrow stream gets a gentle lip and a wide river a fuller bank.
v0.2.93
Moveee Indoor: the sun stays in the sky, not on the bike
2026-07-21- Fixed The sun was pinned to the rider — it travelled along with the bike, which showed up once the clouds started drifting on their own. It now holds its own spot in the world sky, so you ride beneath and past it with real parallax. It only eases back into place if you pull far enough away that it would otherwise leave the sky — a slow glide, never a jump — so the golden light stays put on a ride of any length. The lighting angle itself was already fixed and is unchanged.
v0.2.92
Moveee Indoor: rivers are wider, closer to their real size
2026-07-21- Changed Rivers read wider now. Where OpenStreetMap records a river's width it is still used and kept in proportion — a bigger river stays bigger — but the mapped value is usually the narrow channel, and a bare ribbon looked thin in the world, so rivers are scaled up to a realistic size and held to a sensible minimum. The Ljubljanica, mapped at 20 m, now runs about 28 m, which is close to its real width through the centre. Untagged rivers widen too, while small streams and ditches are left as they were.
v0.2.91
Moveee Indoor: big bridges are grand, with real pillars
2026-07-21- Changed A big, high bridge now has proper pillars — a broad footing at the ground, a substantial shaft that splits into twin braced columns when it is really tall like a real viaduct, and a capital flaring out to carry the deck. And the very widest water crossings are built as suspension bridges, with towers and cables. Small low bridges are left exactly as they were — a plain slim pier and a simple deck.
v0.2.91
Moveee Indoor: nothing floats in the void any more
2026-07-21- Fixed Buildings, trees and other scenery no longer hover in mid-air kilometres out where there is no ground. The map is read from OpenStreetMap out to 2 km around your route, but the terrain is only built to the route's neighbourhood — so anything further out used to sit on an invisible height with nothing beneath it. A feature is now dropped unless there is actual land under it, and a feature straddling the edge still renders. The sea, the coastline, rivers and the road network are exempt, since those are meant to run out to the horizon.
v0.2.90
Moveee Indoor: every bridge is built procedurally now
2026-07-21- Changed Where your road crosses a river or lake that the map did not tag as a bridge, the crossing is now built procedurally — deck, parapets, piers and an arch or steel truss — instead of dropping in a stock bridge model. It uses the same builder that already made the map-tagged bridges, and picks a look from the span: a stone arch for most crossings, a truss for a wide one. The library bridge models are kept only as reference for how a bridge should look.
v0.2.89
Moveee Indoor: castles get battlements, and more roof variety on houses
2026-07-21- Fixed Castles no longer wear a pitched house roof. They now have a flat, battlemented top — the merlon-and-gap crenellation line that actually reads as a castle — while a corner keep tower keeps its pointed cap. Applies to the famous ones and to any other castle the map draws.
- Changed More variety across ordinary buildings: a share of houses now get a flat roof instead of a gable, so a street is not a wall of identical pitched roofs, and the pitch of the gabled ones varies a little from building to building. This sits on top of the existing variation in wall colour, windows, balconies and trim.
v0.2.91
Moveee Indoor: clouds drift on their own wind
2026-07-21- Fixed The clouds were pinned to the rider — the whole sky moved along with the bike, so the far clouds looked glued in place. They now sit in the world and drift on their own breeze, so as you ride you pass beneath and past them with natural parallax while they slide across the sky at their own pace. The sky still stays full around you: a cloud that falls far behind quietly reappears ahead.
v0.2.88
Moveee Indoor: every church and castle is built for real, not a stock model
2026-07-21- Changed Churches and castles are now built from their real mapped outline like everything else — not only the ~40 famous ones. A church that is not a named landmark gets a generic bell tower with the baroque onion cap, sized from its own footprint; a castle gets a keep tower. Before, only recipe-listed landmarks were custom-built and every other church or castle fell back to a repeated kit model. The stock model is now the last resort, used only for one mapped as a bare point with no outline to build from.
v0.2.90
Moveee Indoor: no more straight edges on the clouds
2026-07-21- Fixed The big clouds had hard straight lines cutting across them. Each cloud is painted onto a fixed square canvas, and its billows and the veil of rain beneath were drawn larger than that square — so their edges were sliced off flat where they ran past it. The cloud now fades softly to nothing at all four edges, so those sliced-off rims become a gentle vignette instead of a straight line.
v0.2.89
Moveee Indoor: big dreamy clouds on the horizon
2026-07-21- New The sky now has proper clouds in three layers. Towering, softly-lit cumulus sit far off on the horizon and barely move — the big fluffy ones that catch the light — with smaller clouds drifting at a middle distance and light wisps passing quickly up close, so the sky feels deep and alive as you ride. Each cloud picks up the colour of the light too, glowing warm at golden hour and going a moody blue at night.
- Improved Clouds are painted with lit tops, a warm belly and a soft veil of rain underneath rather than being flat white blobs, and the distant ones stay crisp instead of washing out into the haze. It's built to be light on performance — the whole sky costs about the same to draw as the old clouds did.
v0.2.88
Moveee Indoor: building shadows stop popping in
2026-07-21- Fixed In town, some buildings' shadows appeared only as you rode up to them and dropped across the road in front of you, when they should already have been there. The sun's shadow area was a tight box centred on the rider, so a building started casting only once it came within ~60 m. It now reaches about 130 m ahead along the road, so a building's shadow is cast well before you reach it. Shadow sharpness and cost are unchanged.
v0.2.87
Moveee Indoor: no more trees floating in the air
2026-07-21- Fixed Patches of forest could appear hanging in mid-air. A mapped wood is read out to 2 km from your route, but the ground only reaches as far as the landscape around the route is built — a wood beyond that edge was being planted on a computed height with no actual ground beneath it. Trees are now only placed where there is real ground under them. (These were always there; removing the distant backdrop hills and clearing the haze is what made them visible.)
v0.2.86
Moveee Indoor: distant forests plant fewer, wider tree shapes
2026-07-21- Changed In a wood far from the road, fewer tree billboards are planted and each is a little wider. At that distance the eye reads a mass of green, not individual trees, so the forest looks the same — but thousands of overlapping flat shapes were the last real drain from the far trees, and fewer of them means less of that. Follows on from drawing far trees as flat shapes.
v0.2.86
Moveee Indoor: lighter grass ground cover
2026-07-21- Changed The dense grass patch used for ground cover was a clump of ~4,500 blades dropped hundreds of times, adding up to nearly four million triangles of grass no one looks at blade by blade. It now keeps about a fifth of its blades, and because the patches overlap the thinning does not show — the grass reads the same from the saddle at a fraction of the cost.
v0.2.85
Moveee Indoor: distant forest trees drawn as cheap flat shapes
2026-07-21- Changed Trees in a wood more than about two blocks from the road are now drawn as a simple flat cross-shape instead of a full 3D model — 4 triangles instead of up to 150. You never ride close enough to tell the difference, but a forest is tens of thousands of trees, so this is where most of the tree cost was. The roadside trees you actually pass keep their real models. This targets the biggest single drain on the frame rate.
v0.2.84
Moveee Indoor: the full 1 km around you fills with buildings
2026-07-21- Changed Every building within 1 km of the road is now kept and built, up from 600 m. In a dense centre like the na LJ grad ride that is around 4,800 buildings in the ring — the world stays a solid city out to a kilometre in every direction. The per-stretch limit was raised to 5,000 to hold them. Payload per stretch is about 1 MB. Keep an eye on the frame counter in the very densest areas — buildings are drawn one at a time, so this is the setting most likely to cost frames.
v0.2.84
Moveee Indoor: forests are far lighter
2026-07-21- Changed Woodland is now the biggest thing it can be for the least cost. The dense background woods that fill mapped forests used to draw from all the tree models — including the detailed ones, multiplied across ~200,000 trees — so a couple of heavier models alone were 16 million triangles of scenery no one looks at up close. Woods now use only the light models; the copses beside the road keep the detailed trees, where you actually see them. One roadside model (a single tree of ~15,000 triangles) was being scattered into the distance and is now kept out of the procedural woodland entirely. On a wooded route this cut the trees roughly in half and the whole scene by about a third, with no visible change from the saddle.
v0.2.83
Moveee Indoor: up to 3000 buildings per stretch for a full city
2026-07-21- Changed The world can now build up to 3000 buildings around each stretch of route, more than double the previous limit. On the na LJ grad ride that fills the whole 600 m around you solid — about 2700 buildings in that ring alone — where before the city thinned out sooner. Watch the frame counter in a dense centre: each building is drawn separately, so this is the setting most likely to cost frames; it can be dialled back if it does.
v0.2.82
Moveee Indoor: every building within 600 m is kept, town or country
2026-07-21- Changed The solid, unthinned area around you now reaches 600 m in every direction, up from about two blocks — and it no longer matters whether the map calls the area urban or rural, every building inside that ring is kept. The far-building limit was also lifted so the client now builds every building the map sends rather than trimming the distant ones, so the surroundings fill in completely out to that range.
v0.2.81
Moveee Indoor: the two blocks around you always fill in
2026-07-20- Fixed Riding through a city, the blocks right beside you no longer thin out. Buildings were being randomly dropped everywhere to keep distant areas from getting too dense — but a real city centre often has no landuse drawn over it in the map, so those blocks were treated as countryside and lost about 40% of their buildings right where you ride. Now every building within two blocks of the road is always kept; the thinning only applies further out. Checked against the na LJ grad route, where ~1,180 buildings sit within two blocks and roughly 470 of them used to disappear.
- New The build wraps around you at least two blocks in every direction in a city, instead of falling away a street or two back.
v0.2.81
Moveee Indoor: farmland is far lighter on the graphics card
2026-07-20- Changed Fields of wheat and corn were the single heaviest thing in the world — a whole clump of crop for one tuft, then that tuft laid down hundreds of times per field, which added up to tens of millions of triangles and was the real cause of the drops in the countryside (not the forest, as it looked). Each tuft now keeps only a fraction of its stalks; overlapping neighbours close the gaps, so a field looks the same but costs a fraction as much. Fields you ride past stay dense; ones further off thin out, and distant farmland gets only a token scatter.
v0.2.80
Moveee Indoor: buildings reach far into the distance, and the sliding hills are gone
2026-07-20- Changed Houses and blocks now render much further away. They used to be fetched only 1 km from the road and the closest 600 were kept, so a city thinned out to bare ground a few streets away; now they are read to 1.8 km and up to 1400 per stretch, and the haze has been pulled back to match, so a town keeps its skyline into the distance. The procedural buildings are cheap enough that this costs frame budget you were not using.
- Note The rolling hills that slid along beside you in the distance are gone. They were a ring of fake ridges that followed the rider rather than real scenery, and they read as hills moving with you. Turned off for now — easy to bring back later.
v0.2.79
Moveee Indoor: eleven more things read straight from the map
2026-07-20- New Walls line the roads now — dry-stone walls for the Karst, concrete retaining walls on hillside roads, hedges and fences elsewhere — all read from OpenStreetMap and built in place, not dropped in as models.
- New Towns fill in: street lamps, benches, fountains, drinking fountains, monuments and memorials, bollards and gates, and picnic tables — each built from a few shapes exactly where the map has it. On a ride through Ljubljana that is 33 lamps, 48 benches and dozens of walls in the first stretch alone.
- New Coastal rides get piers out over the water and boats moored in the marinas (verified on the Izola route: 3 marinas, 8 piers). Alpine rides get cableways — pylons up the slope with a cable and the odd cabin. Vineyards and orchards are planted as real rows, the striped-hillside look of Goriška and Štajerska. Cliffs get a rock face, mountain summits a summit cross, and car parks are filled with procedural parked cars instead of a stock lot.
- Changed All of it is procedural and merged per feature, so a long wall or a street of lamps is a single draw call, and every piece stays off the road and out of the water — and looks the same each time you ride past, because its placement is fixed to where it stands rather than rolled fresh.
v0.2.79
Moveee Indoor: power lines are far cheaper, and pulled in a little
2026-07-20- Changed Overhead lines used to place every pole and pylon as its own object — hundreds of them on a route, and the single biggest thing left on the draw-call budget once the forests were fixed. A whole line now draws as a handful of objects instead of hundreds, with no change to how it looks.
- Changed Pulled the reach of overhead lines back in too: they had been extended out to make sure they were always visible, but that filled the distance with more pylons than a route needs. Poles are read within 350 m of the road and lines within 1 km.
v0.2.78
Moveee Indoor: power comes only from your trainer, and leaving saves the ride
2026-07-20- Fixed Exploring without a trainer no longer shows power out of nowhere. Stepping in through “Skip — explore without” used to run a demo trainer, so the HUD read about 150 W (with a matching cadence and heart rate) that you had not produced. Now the world still rolls along so you can look around, but power, 3-second power and cadence show a dash — because nothing is being measured. The only thing that produces power is a real trainer.
- Changed Leaving the app ends the ride session. If a trainer was connected and you rode for at least a minute, the ride is saved to your calendar on the way out — whether you leave by navigating away, closing the tab or refreshing — so a ride is never lost by simply exiting. An explore session has nothing to record, so nothing is saved.
- Changed Ending the session also stops everything that was running for it — the sensor sampler, the world tickers and the route-map downloading — so the app is not still asking the server for scenery for a ride nobody is on.