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.34.
v0.3.1
Moveee Indoor: greener roadsides — foliage spreads into the fields
2026-07-21- Improved Grass, weeds and wildflowers now fill a much wider band beside the road — reaching about 30 m out into the fields instead of a thin strip on the verge, and roughly three times denser, so the land next to you looks lush and alive rather than bare.
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.
- 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.
- 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.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.
- 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: 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.
- 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: 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.
- 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.
- 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.
- 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.
- 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.
- Changed 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.
- 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.
v0.2.77
Moveee Indoor: the sea is water again
2026-07-20- Fixed The sea is visible on coastal routes. It was being painted onto the land as a colour — every water vertex took the ground height beneath it and sat 6 cm above it — so it climbed the hills behind the shore (measured on the Izola route: a surface running from 32 m below sea level to 182 m above it) and, because the swell moved vertices up to 1.95 m, it spent most of every wave underneath the ground it was painted on. It is now a genuinely flat surface floated at sea level, with the land cut away beneath it.
- Fixed Water off Izola was lit as if from below. The surface was wound so its faces pointed down, which meant the hemisphere light coloured it with the ground tone instead of the sky — the Adriatic came out grey-green even with the sun overhead.
- Changed Sea level is measured rather than assumed: the shoreline is where land meets water, so the ground along it is sampled and the median taken. Only stretches near the ridden route count, since the elevation there is real surveyed data — sampling the rest put the waterline 8 m below an Izola seafront that sits at zero.
- Fixed The ground can no longer be carved out from under you on a coast road. Cells the route passes through are held dry outright, which matters on a seafront where the tarmac runs within a few metres of the water.
v0.2.76
Moveee Indoor: Slovenian landmarks you can actually recognise
2026-07-20- New 37 Slovenian landmarks are now built as themselves: Ljubljanski grad with its outlook tower, the cathedral with its twin towers and green copper dome, the red Frančiškanska cerkev on Prešeren Square, Nebotičnik at its real height, Blejski grad and the island church, Piran's free-standing campanile, plus Predjama, Ptuj, Celje, Maribor, Brezje and the Russian chapel on Vršič. Twenty towns in all.
- New Baroque onion steeples — the bulbous cap on Slovenian church towers — are real geometry now rather than a plain spire, which is most of what makes a church here look like a church.
- Changed A landmark is built from the outline OpenStreetMap traced, exactly like every other building; the recipe only adds what an outline cannot say. Nothing is a hand-made model, so a landmark keeps its true footprint and position, and correcting one is a data edit rather than a code change.
- Fixed A landmark is matched by name AND by where it is. Slovenian churches share dedications relentlessly — found on a real ride, a Ljubljana church called sv. Janeza Krstnika had picked up the recipe written for the one in Bohinj, 60 km away. Recipes carry a position now, so Piran's 40-metre campanile cannot turn up on a chapel at the other end of the country.
v0.2.75
Moveee Indoor: a barn no longer looks like somebody's house
2026-07-20- Improved Buildings now look like what they actually are. The map already knows whether something is a house, a block of flats, a shop, a school or a warehouse, and the world was ignoring it — so a farm shed got the window sills, the balconies and the warm plaster of a cottage. Flats now get balconies, shops get glazed fronts at street level wherever they stand, and sheds and warehouses get clad walls with a high strip of glazing instead of rows of little windows.
- Improved Where the map only says "a building is here" — which is most of them outside town centres — nothing has changed. Buildings are only dressed differently where the map actually said what they were.
v0.2.74
Moveee Indoor: the new town buildings stay off the road
2026-07-20- Fixed Buildings from the new low-poly town pack could stand in the middle of the road. Each was split out of a ten-building pack and kept the position it had there, so it was drawn up to 33 metres away from the spot that had been checked for road clearance — the check was right, it was just looking at the wrong place. Every building model is now centred on its own footprint, so what gets checked is where the building actually stands.
- Fixed A thin open gap ran around the eaves of pitched roofs. A roof deliberately oversails its walls a little, the way a real one does, and that overhanging strip had no underside — so there was a slot you could see through all the way round the building. The roof now builds its own underside from the exact corners it stands on, so the two cannot disagree.
v0.2.72
Moveee Indoor: another city block withdrawn · no more seeing through buildings
2026-07-20- Changed One more of the city-pack building models has been withdrawn after review, so it no longer appears anywhere. The two places it had been hand-picked for now take an ordinary building instead.
- Fixed Some buildings had a slot under the roof you could see straight through, and on a few the roof hung far out past the walls with nothing underneath it. The walls follow a building's real outline while its roof was cut from a rough box around it, so wherever those two disagreed the roof overshot and the space beneath it was simply open. Roofs are now fitted to the building they stand on, and both the underside of any overhang and the top of the walls are closed.
v0.2.71
Moveee Indoor: windows, doors and chimneys — and no two the same · shopfronts, sills and cornices
2026-07-20- New Buildings have windows and a front door now, laid out in real storeys with solid wall kept at each corner. The door goes on the longest wall, which for a building sitting along a street is the one facing you.
- New Something on the roof: a chimney on the pitched roofs, and masts, water tanks or a stair housing on the flat ones. Deliberately not on every building — detail everywhere reads as clutter rather than as a town.
- New Every building looks different. Wall tone, window rhythm and what stands on the roof are all drawn from where the building actually is, so a street is varied — 146 different wall tones across 300 buildings on the Izola route — and, more importantly, a building keeps the same face every time you ride past it instead of changing as the scenery reloads.
- Changed All of it is built into the same single mesh per building, so a block with sixty windows still costs three draw calls rather than sixty-three. A detailed building comes to about 51 triangles.
- New Town buildings have shops on the ground floor — wide, low glazing running most of the bay with a sign band above it, instead of the same flat windows repeated down to the pavement. The street door stays where it was.
- New More relief on every facade: a ledge under each window, an overhang where the wall meets the roof, and a low coped parapet around flat roofs. Which of these a building gets is part of its block's shared style, so a terrace carries them together.
v0.2.70
Moveee Indoor: buildings are the shape they really are · streets that look like streets
2026-07-20- New Buildings along your route are now built from the outline OpenStreetMap actually traced, instead of a stock model stood on the spot. A courtyard block is a courtyard block, an L-shaped farmhouse keeps its L, and a long factory hall stays long. On a ride through Izola, 37% of buildings had a real outline that a box could not describe.
- New Roofs. Where the map records a roof shape it is used; where it does not — which is almost everywhere — a small low building gets a pitched roof and anything tall or hall-sized gets a flat one, so a village street reads like a village street.
- Changed A building traced right up against a street no longer has to be pushed away from it. A stock model was rarely the size of the footprint it was given, so it had to keep a safe circle clear of the tarmac; a building built from its own outline can be asked the exact question instead.
- New Buildings vary far more. Facades take different tints, windows come in different sizes, glass differs from building to building, and most windows now sit in a rendered surround. Some buildings carry balconies on their upper floors, on the street-facing side.
- New Neighbours match. A building takes its look from its block and its rough height rather than from its own position, so three similar houses standing together read as a terrace while the taller block behind them keeps its own character. Each house still shifts its shade a little, so a row is a family rather than the same house three times.
v0.2.69
Moveee Indoor: everyone in a room rides the same road · the sea is finally there
2026-07-20- Fixed A shared route is now built the same way for every rider in the room. If you had turned on removing out-and-back spurs for a ride of your own, that setting could follow you into a group ride and give you a slightly shorter road than everyone else, so your position on the route drifted out of step with theirs. A shared route is always ridden exactly as it was saved.
- Fixed The sea was being built and then thrown away. A check meant to skip water too far from the road to see was using a road-proximity lookup that reports "infinitely far" a hundred metres off the route, so nearly every piece of sea was discarded before it was drawn — on the Izola coast, 43 patches of water survived out of 8,715. The check is gone; how far the water runs is now set by the shore itself.
- Changed The sea reaches three kilometres out from the shore, so it reads as open water to the horizon rather than a strip, and the swells were lengthened to match — long ocean rollers rather than close-up ripples, which is what you actually see from a kilometre away.