Changelog
Last updated
Week of Sept 14
- Improved bots! π€
- 3 bot modes - Companions (bots that stay with you), Gran Fondo (bots spread around the route), and Race
- 5 race difficulty levels, which can be changed mid-race
- Bots have situational awareness, will plan and adjust tactics based on the terrain, their energy reserves, etc.
- Each bot has a unique risk tolerance and willingness to cooperate
- Bots are now able to decide when to attack, chase, sit in the draft, take a pull, or let a breakaway go
- Bots save energy for the finale, launch late attacks, and respond to rivalsβ sprints
- Added race position stat beside the lap counter
- Removed unnecessary "Edit" icon from actions menu (bottom left)
- Fixed grass poking through the road at turnaround joins
- Fixed terrain poking through bridge decks
- Fixed bike chain clearance (prevents flickering)
- Added higher res 3D rider models π₯
- Fixed race gaps on out-and-back courses
- Fixed issue when multiple cadence devices are paired
- Fixed rare Power Match bug
- Improved multiplayer smoothness on internet lag
- Support Zwift Ride controller multi-button presses
- Added ride loading indicator...
- Prevent bridge piers from rendering on roads underneath (props JM)
- Improved guardrail detection and implementation (props JM)
- Fixed terrain clipping at tunnel entrances
- Fixed floating roadside foliage
- Fixed flickering far-view terrain, wasn't getting properly culled
- Improved 3D avatar lighting / shading
- See last week's changelog β
Week of Sept 7
- Moved streetlights closer to the road, centered lights mid-lane
- Automatically clear device metrics upon dropout / disconnect
- Added Torque UI stat (NΒ·m)
Week of August 31
- Route editor - improved speed of the "Auto-detect brunnels" feature π₯
- Improved roadside grass coloring and blending
- Improved forest ground cover
- Fixed flickering windows at night
- Optimized scene rendering, more efficient "Maximum" view quality
- Added 12 new flora species, including weeping willow, pricky pear, redwood, baobab, etc.
- Increased tree trunk poly count
- In-ride zone chart labels are now prefixed with
PWRorHR - Massively increased view distance (up to 10x!) across all user tiers π₯
- New turnaround statues!
- Fixed multiplayer bug in the old (WebGL) engine
- Hardened race events to prevent spoofing
- Rebuilt the in-ride HUD π₯
- HUD - more customizable stats
- HUD - added online rider positions to the elevation chart
- HUD - cleaned up the rider list
- HUD - better mobile / responsive support
- HUD - added chat "toasts" when the chat box is minimized
- HUD - moved drivetrain settings to "Ride" menu
- HUD - added "Power step" setting to control ERG step (default = 5W)
- Events page - grouped by series AND event type
- Server-side - optimized world datasets
Week of August 24
- Rebuilt the in-ride menu
- Menu is now keyboard accessible (incl. hardware buttons!)
- Native apps - devices now auto-save automatically, and un-save when you manually disconnect them
- More intuitive device pairing UI
- HUD - new "Altitude" stat
- HUD - new "HR zones" stat
- Chat - hidden on page load, the notification dot show unread message count
- Allow for "Teleport to distance" value to be typed in
- Redesigned activity pages, including new "Training Load" stats
- Redesigned athlete profile pages
- Redesigned event detail pages
- Redesigned club detail pages
- Redesigned challenge pages, better description of actual goals
- Redesigned site-wide tables (much more usable)
- Disabled blinking tail lights π¨
- Various website styling tweaks
- Fixed unreadable HTML dropdown choices in Windows
- Route map - reduced cluster density, improved performance
- Added font smoothing
- Patched some edge-case tunnel seams
- Reduce terrain carving around bridges
- Terrain carving improvements
- Added in-ride screenshots πΈ
- Redesigned /events page, enabled series grouping by default
- Redesigned event series pages
- Improved roofs for simple buildings (proper A-frames)
- Removed windows from small, skinny buildings... towers, pillars, etc.
- Some building windows are lit at night
- Added new start arch
- Urban areas: added streetlights, sidewalks
- Menu - clicking a multi-choice setting now opens a dropdown of its options
- Added "Download photo" button to activity pages (saves to PNG)
- Exported filenames now include the activity ID and title
- Styled the export buttons, added progress indicators
- Fixed bug with disappearing bridges / guardrails on short loop routes
Week of August 17
- Ride with others on ANY route! Instantly toggle between Offline and Public modes (top right of ride screen)
- Easier to ride with others! Added a Live Map to see who's riding right now and jump in (subscribers)
- Join a rider - you start by spectating the rider until your devices are ready to go, then click "Start riding" to drop your avatar beside them
- Spectate any populated route
- Click a rider in the rider list to show a context menu: teleport or mute them
- Added a "# riders" badge to routes and events
- Activity detail - new "You rode with" section to easily follow the people you rode alongside with
- Settings - added a Privacy tab with clearer descriptions
- Added subscription details to the Settings page
- Improved the subscriber workflow, show renewal dates
- Added compare page: Indoor Cycling Apps in 2026
- New Facebook URL: https://www.facebook.com/ridebiketerra
- Added Terrance the turtle to route detail pages
- More SEO improvements
Week of August 10
- π₯ Rebuilt trees, shrubs, and grass, now 16 plant species across biomes
- π₯ More realistic leaf shapes, true to each species
- 3D grass now extends beyond the roadside
- Distant trees stay correctly lit as the sun moves through the day
- Reduced stuttering during the first seconds of a ride
- Fixed 2D trees so they blend much better into 3D
- Fixed route quality scores shifting after saving a route
- Fixed grass sprouting behind the start/finish line on looped routes
- π₯ Routes now use real-world climate data instead of hand-picked biome presets
- Improved flora species placement based on real ecology
- Improved spread / clustering of forest tree species
- Improved and simplified logic for snowy tundra routes
- Route editor: prevent smoothing when using "Align elevations"
- Added support for limiting foliage to native ranges (e.g. Saguaro)
- Fixed attendance percentages to handle ongoing events
- SEO improvements (finally)
Week of August 3
- Tons of visual updates from last week, check out full changelog
- New volumetric clouds
- Real star positions (5,000 stars!), thanks to the Yale Bright Star Catalog βοΈ
- Added dynamic moon phase
- Re-balanced ground colors, lowered saturation to more realistic levels
- Added Help Center "Updates" section (newsletter)
- Tweaked Help Center styles
- Added "Calories" stat to activity detail pages
- Raised POV camera to eye level, switched to sticky vertical tilt
- Fixed multiplayer ping regression, props @Rocketman
- Fixed unrealistic cloud movement upon camera rotation
- Fixed fogged terrain clipping clouds
Week of July 27
- Added tooltips to the dashboard chart
- Fixed inline editing on the /settings page
- Fixed social bots not holding pace around you
- Prevented the minimap from re-centering when mouse hovered
- Fixed bots masses (now skewed based on the Ego rider)
- Improved Social bots, they no longer just wheel-suck
- Brighter, more natural daylight, with distinct morning/evening/night moods in every biome
- Rivers and lakes are now flat, level water with real waterlines
- Rivers visibly flow downstream, rushing and churning white on steep drops
- Lakes are calm and glassy at a distance, sparkling up close
- Natural shorelines with sandy shelves, wet edges, and lapping waves β even along roads and under bridges
- Added sun and moon!
- Sky colors are dynamically calculated based on sun position, turbidity, etc.
- Improved shadows, including realistic blue hues at sunset
- Improved haze, water and reflections to match the sky
- Added
Timesetting to let you customize the sky + lighting - Added
Time flowsetting to enable automatic day/night cycles - Prevent Gran Fondo bots from waiting for the stopped Ego
Week of July 20
- Revamped bots!
- New: bot behavior presets β the rider field will populate automatically
- New: Spicy finales β bots launch late attacks, sprints, and counters in the closing kilometers
- New: Bots now think for themselves β chasing, attacking on climbs, countering moves, and sitting in to draft like a real group
- New: Every bot has its own strengths and style β sprinters, climbers, engines β no two feel the same
- New: Bots spend energy, fade when they've overcooked it, and try to save something for the finish
- Improved: Smoother, more natural terrain and cleaner roadsides
- Improved: Faster, tidier loading
- Fixed bots spawning at zero speed
- Fixed milepost markers on long routes (numbers are now vertical)
- Revamped site filtering
- Dashboard - added filterable trends
Week of July 6
- Added TDF LIVE (livestream of each TDF stage)
- Added building varieties
Week of June 29
- Fixed
Foliage stylesetting not saving - Fixed distant-scenery flicker
- Route editor: use lerped elevation when adding a point
- Route editor: don't auto-update elevation when dragging a point
- Fixed "moving time" counting paused/stopped gaps as moving
Week of June 15
- Fixed bugs discovered via the crashlog
- Fixed tile-load and grass-generation frame stutters
- Fixed grade Infinity β NaN rider crash spiral at hairpin turns
- Website - reorganized detail pages
- Events - completing an event automatically removes it from your iCal feed
Week of June 8
- Fixed /collections pagination
- Added power meter left/right balance to FIT export
- Added ability to upload JSON routes
- Added "Ambient Roads" UI setting to toggle side roads
- Added ability to "cheer" another rider's activity
Week of June 1
- Route Editor: added button to auto-detect and annotate bridges/tunnels!
- Settings page: fixed issue when applying discounts
- Route editor: improved responsiveness for huge (200k+ point) routes
- Event listing: display the associated series image if available
- Bridges: added split pylons to support roads underneath
- Fixed rowing power fade-out (inactivity timeout never fired)
Week of May 25
- New Route Editor!
- Route Editor: added option to either upload or draw a route
- Route Editor: cleaner UI, bigger edit area
- Route Editor: better overview of route issues
- Route Editor: added a "Fix" button beside each issue
- Route Editor: added a "Fix all" button above the issue list
- Route Editor: simpler flow to add annotations (brunnels, surface types)
- Route Editor: support annotations across loop boundary
- Route Editor: click+drag in elevation area to select, shift+click+drag to zoom
Week of May 18
- Added custom virtual gear ratios (in-ride setting)
- Added power zone UI
- Fixed chat notification dot always blinking
- Fixed missing "Start time" field when creating casual events
- Added "Rowing" control mode
- Added "Rowing power boost" UI setting (to better sync rowing power with cycling power)
- Added power zones chart to activity detail pages
- Added API Key generation to the settings page... more details soon
- Faster terrain loading
Week of May 11
- Added
CaloriesUI stat (+ added to FIT export files)
Week of May 4
- All 6 featured routes are now online-enabled
- Drafting model V2 (props Mike W)
- Improved slipstream shape, increased tail length
- Fixed issues with motion planning causing periods of 0 draft
- Handle when Cloudflare Turnstile (captcha) is blocked
- Improved tile loading, added retry logic
Week of April 27
- Fixed grass poking through roadside cropland
- Improved tunnel appearance, cleaned up terrain "hole punching"
- Added smoothing to tiny streams
- Fixed lag/freezing when loading buildings in dense urban areas
- Fixed event time weirdness
- Fixed rider angle when stopped and teleporting
- Fixed pressure wave effect for lead riders
- Fixed shadows at sections of singletrack / gravel roads
- Improved bridges
Week of April 20
- GPU memory tuning + crash recovery improvements
- Added memory usage stats to the Debug overlay (SHIFT + Z)
- Improved memory usage of the wireframe mesh mode
- Fixed trees not respawning properly when restoring a tile from cache
- Cleaned up logging
- Switched to better elevation data source
- Tweaked water depths / widths
- Experimental: added /routes/draw page for building new routes
- Fixed duplicate BLE connection attempts for native apps
- Standardized fetch() requests β to make log viewing easier
Week of April 13
- Added automatic GPU crash recovery
- Added more multiplayer latency handling
- Roamer bot FTP is now 55% - 110% user FTP
- Removed unnecessary dependencies, reduced load size
- Modernized site-wide reactivity (Svelte 5)
- Added automatic (and manual) debug log uploading
Week of April 6
- Fixed TTT team assignment for late joiners (hopefully?)
- Reduced Ego resolution to fix jersey distortion
- Updated bot archetypes (they should be smarter now)
- Improved multiplayer latency handling
- Standardized cadence-based stand pedaling across all rider types
- Clarified "Forgot password?" text
- Major internal code cleanup
- New website design (sorry, all the purple got to be too much)
- Fixed end-of-route turnarounds
- Fixed surface types at loop boundaries (props Dan C.)
- Fixed route editor surface type annotations at loop boundaries
- Better GPU frustum culling for grass/trees
- Fixed rider shadows
- Fixed dense urban area freezes β removed expensive building overlap detection, added frame-budget yields
- Removed three.js animation dependencies
- Cap stand-pedaling to 60rpm
- Fixed rider speed issue w/ Maximum view distance β birds exceeded their buffer limit, causing a GPU breakdown
- Added dark mode
- Updated elevation chart colors (based on Jim's feedback)
- Fixed Route Editor's dark mode styling