Changelog (older items)

Click here for the recent changes ยป

Week of February 24

  • New: added brake lights (auto-brake indicators)
  • Anonymous users can now view the /events listing
  • Camera button (C) now cycles, even when lookbehind (B) is active
  • Visuals V2 - improved aesthetics
  • Fixed braking issues
  • Fixed bug causing crashes when spawning roamer bots
  • Adjusted desert grass density
  • Working on Visuals V2...

Week of February 17

  • New: added real map to the in-ride minimap
  • New: Motion Planning V2!
  • New: auto-braking!
  • New: intelligent draft-seeking! Riders will now automatically steer towards optimal slipstream positioning
  • Improved: revamped rider "flow" (pack dynamics)
  • Improved: smoother rider motions, less jitteriness
  • Fixed some route coarseness issues
  • Fixed issue with Zwift Hub virtual shifting
  • Fixed issue preventing the avatar from stopping on ride pause
  • Fixed timer issue when the browser window is inactive
  • Adjusted 1st person camera view
  • Tweaked auto-braking parameters (it was a bit too cautious)
  • Added Route Collections

Week of February 10

  • Getting close to finishing Motion Planning V2...
  • Added support for ERG mode free rides
  • Cleaned up Debug Mode styling
  • Workouts - increase bias range to +/- 25%
  • Workouts - charts are color-coded based on zone
  • Race - fix users not auto-starting if joining late

Week of February 3

  • Fixed speed issue for users on low-end machines
  • Added FPS counter (appears when FPS drops below 20)
  • Website design tweaks
  • Fixed desync / teleport bug (likely caused recent crashes)
  • Added a handful of preloaded workouts
  • Tweaked the workout menu UI
  • Workouts - support .ZWO cadenceLow and cadenceHigh
  • Races - ability to export Race or Cooldown separately

Week of January 27

  • Roamer bots have more sensible power ranges (props Aku)
  • Improved route processor, much better handling of subtle terrain changes
  • Fixed bug preventing ability to re-upload certain routes
  • Added rider threshold_wkg to event (race) API results
  • Added CORE temp data to the FIT file

Week of January 20

  • Added better debug logging
  • Added a "Download log" button in the /ride menu ("Riders" tab)
  • Added "Race results" sidebar to the event listing page

Week of January 13

  • New drafting model
  • Added "Teleport to distance" UI setting
  • Added "Teleport to rider" UI setting (for online casual events)
  • Instant U-turns (no page reloads)
  • Route Editor - fixed loop routes not being connected correctly
  • Route Editor - fixed "NaN%" gradient for finish line point
  • Minor drafting model tweaks (i.e. support negative drag)
  • Fixed some Bluetooth issues w/ Zwift Click and virtual shifting
  • Workouts - interval cadence will display if available
  • Added support for Core Body Temp sensors (will display readings)
  • Fixed Core Body Temp data reading issue
  • Logged-out users can now view (public) route and event detail pages
  • Fixed minimap progress disappearing when toggling the ride UI

Week of January 6 (2025)

  • Routes listing - "Keywords" filter accepts a route ID
  • Added support for route collections (more details soon)
  • Added "Add to calendar" button to event pages
  • Fixed Zwift Click support (set Control Mode to "GEAR" after pairing)
  • First pass at supporting CORE Body Temperature Sensors (awaiting test device to finish implementation)

Week of December 30

  • Rebuilt FIT encoding / decoding (95% less code than before!)
  • Added dual-power recording to FIT files (power2)

Week of December 23

  • Added support for native (hardware) virtual shifting for devices that support it

Week of December 16

Week of December 9

  • Added Route editor V2!
  • Route editor - better elevation handling
  • Route editor - shift+click to select point ranges
  • Route editor - fixed brunnel creation issue
  • Route editor - various smoothing fixes
  • Smoothing tweaks to reduce slaloming
  • Performance tweaks to reduce stuttering on slower devices
  • Locked down the "free ride" hotkey
  • Prevent bots for race events
  • Renamed "World bots" to "Roamers"
  • Fixed performance issue when saving huge (24+ hour) activities

Week of December 2

  • Finishing up the Route Editor
  • Added annual pricing option
  • Fixed finish line freezing bug for timed events
  • Added error handling (retry and direct activity download) in case activities fail to upload

Week of November 25

  • Multiplayer - added rider list stats toggle (Watts, W/kg, and Speed)
  • Multiplayer - fixed the race results list height
  • Profile - display the rider's routes count (clickable)
  • Profile - styled the follows page
  • Routes - added ability to filter routes by author
  • Activity detail - prevent error when activity data is missing
  • Multiplayer - fixed rider list ordering (again) ๐Ÿ˜…
  • Fix - exclude heart rate "0" values from the average
  • Fix - allow for text selection
  • Workouts - added support for ftpOverride tag (.ZWO files)
  • Routes listing - show only public routes by default

Week of November 18

  • Multiplayer - refactored code for much better performance
  • Multiplayer - fixed latency detection & correction
  • Multiplayer - smoother rider movements
  • Multiplayer - removed gradient to improve chat readability
  • Workout - improved in-ride workout graph
  • Workout - clicking the interval list toggles between Watts and %FTP
  • Events - show event type (and # laps) on detail pages
  • Fixed blank activity page when activity file is missing
  • Multiplayer - fixed rider list ordering

Week of November 11

  • Added rider locations to the minimap
  • Added a "Low FPS" check when first loading the app
  • Fixed the "turnback" error on the BikeTERROR challenge
  • Prevent camera cycling when in "look-behind" mode
  • Miscellaneous motion planning / jostling fixes
  • Multiplayer fixes
  • Updated homepage text and images

Week of November 4

  • Added facets to the Challenges page
  • Added ability to filter events by ones you've created
  • Added ability to approve/reject follow requests (in the Dashboard)
  • Added "Hotkeys" tab to the in-ride menu
  • Added "U" hotkey to toggle the UI
  • Multiplayer - fixed activity resuming
  • Multiplayer - fixed issue with improper disconnects
  • Multiplayer - prevent duplicate riders
  • Multiplayer - adjust socket reconnect attempts
  • Improved activity resuming to support tracking multiple rides
  • Dynamic activity title based on route, event, and workout
  • Multiplayer - fixed slaloming issue
  • Multiplayer - fixed issue where a user who teleports (due to desync) leaves behind a "ghost" affecting other riders
  • Multiplayer - reduced jostling

Week of October 28

  • Added timed events! (i.e. "not-race races")
  • Added in-ride event results
  • Added event detail page results
  • Added "Description" and "Event type" fields
  • Revamped the events listing page, added facets
  • Better handling of events w/ private routes
  • Switch a route from "private" to "unlisted" when submitted for publication
  • Fixed issue when connecting to TrainerDay oauth
  • Fixed ERG issue when first starting a workout

October 2024

  • 2-directional travel!
  • Refactored in-ride UI
  • New gradient graph, can be toggled between full and zoomed-in view
  • Laid the groundwork for arbitrary u-turns
  • Laid the groundwork for routes with multiple paths
  • Added roundabouts to the ends of point-to-point routes
  • Added ability to toggle between portals & u-turns
  • Automatically use the correct country-based lane side
  • Numerous minor fixes and improvements
  • Multiplayer UI revamp (chat, rider list, etc)
  • Improved camera pitch to better indicate gradients
  • Fixed disappearing grass
  • Fixed rider avatars showing the wrong gender
  • Fixed tank slapping issue
  • Improved water coloring
  • Added BikeTERROR challenge (with custom environment)
  • Online events - prevent rider movement until event starts
  • Added "Advanced settings" to route editor
  • Added Intervals.icu activity uploads

September 2024

  • Added Route Finder!
  • Added custom multiplayer!
  • Refactored the events feature
  • Factored grade into rollingResistance (props GCUser99)
  • Added support for login redirects
  • Fixed camera modes
  • Fixed event rider list ordering
  • Fixed event crash for users missing design data
  • Fixed workout issues: rate limiting, and SIM->ERG switching
  • Tweaked the ride UI
  • Added multiplayer chat
  • Added intervals.icu integration
  • Fixed browser Wake Lock
  • Fixed issue preventing terrain from loading
  • Implemented free tier quotas (early birds excluded)
  • In-ride event countdown now uses server time
  • Fixed Bluetooth HR bridging

August 2024

  • Added Tunnels!
  • Added Events (for scheduling online group rides)
  • Improved environment blending for bridges and tunnels
  • Fixed issue with buildings disappearing on loop routes
  • More performant route editing
  • Sorted online rider list by distance ahead/behind
  • Added "Power Bias" UI setting for adjusting workout power
  • Activities now include device names (for debugging)
  • Events - send reminder emails to participants 15m before start
  • Fixed scaling issue with Activity detail page chart
  • Fixed in-ride elevation chart (scaling issue)
  • Added progress arrow to in-ride elevation chart
  • Switched skin tone to 12-option color palette
  • Switched to using dynamic CdA (improved physics)
  • Updated "Subscription" page comparison table
  • Added birds and guardrails
  • Added support for workout FreeRide intervals
  • Added support for "gear" control mode (W: up, S: down)

July 2024

  • Improved route processing (much less bandwidth needed for users)
  • Reduced page size for route detail pages
  • Fixed elevation profile progress (in-ride)
  • Route editor - automatic route loop detection
  • Route editing
  • Multiplayer v1 (!)
  • Display multiplayer-enabled route at top of /routes listing
  • Bridges are now appearing again
  • Fixed buildings overlapping the road and trees
  • Added building textures
  • Improved 3D scene lighting
  • Revamped pacer bots, their power is now automatic and you can choose between "Balanced" and "Aggressive" pacer modes
  • Added "Duration" (estimated time to completion) to all routes
  • Added "FTP" user setting
  • Fixed Bluetooth FE-C issues (props Wouter and wizbit)

June 2024

  • This month, we'll be focusing mostly on under-the-hood updates, as well as the first pass at multiplayer.
  • Fixed screen timeout (Wake Lock)
  • Club leaderboards now reset on Monday (UTC +0)
  • Re-built the ground cover dataset
  • Lots of website design tweaks
  • Added page titles (to better distinguish browser tabs)
  • Ride page - open Devices menu on pageload
  • Added challenge leaderboards
  • Added tooltips / helptext
  • Added new "Energy" metric to replace "Difficulty"
  • Added author name to activity + route detail pages
  • Fixed the dreaded NaN radius issue
  • Fixed duplicated pacer bots
  • Fixed stopped worldbots
  • Fixed activity reporting bug (for routes w/ portals) that was improperly adding the difference between the Start & Finish lines to the total elevation
  • The app runs better now, even with many worldbots
  • Fixed graphics issue when users navigate away + return to the ride screen
  • Added in-ride elevation profile graph
  • Improved virtual shifting logic

May 2024

  • Added buildings v1!
  • Added 2nd biome (desert)
  • Replaced activity detail charts
  • Increased smoothing to 3s (power, cadence) and 5s (HR)
  • Refactored codebase to make adding new biomes easier
  • Switched filters to a mobile-friendly flyout
  • Added permalink support for filters
  • Support multiple daily TrainerDay workouts
  • Fixed resistance on older Wahoo trainers
  • Fixed bug where old tilesets weren't being recycled
  • Fixed issue with Bluetooth FE-C (Neo 2T, etc)
  • SEO optimizations

March 2024

  • New logo
  • New homepage design
  • Added "Connect to Strava" button to /settings
  • Revamped challenges UI
  • Fixed uint24 issue in FTMS protocol
  • Much better dropout auto-reconnect support
  • Fixes for older Wahoo trainers
  • Better route preprocessing to smooth out kinks
  • Improvements to virtual shifting (more to come)
  • Added TrainerDay integration
  • Re-styled the routes listing page
  • Colorized the /routes elevation graphs
  • Revamped web-bluetooth (new UI)
  • Refactored workout functionality
  • Improved stage-based challenges, fixed errors
  • Fixed date issues with saved FIT files
  • Added website feedback form + live chat
  • Homepage text edits

February 2024

  • Added clouds
  • Fixed timing issue preventing rider models from loading
  • Fixed blank screen on activity detail page
  • Fixed color picker alignment issue
  • Fixed issue with ocean water seams
  • Added Discord link to dashboard
  • Added support for Athletica FTP detection (waiting on an API endpoint)
  • Fixed issue preventing the FTP input box from being editable
  • The topnav is now mobile-friendly
  • Added Cinecam
  • Fixed issue of world bots remaining as ghosts when de-spawned
  • Adds slight lateral variation to world bots for more natural distribution across the road
  • Adds dynamic rho to the physics calculation (based on a route's average elevation)
  • Removes now-deprecated brunnel code and elevation handling from the client-side
  • Fixes issue where foliage isn't rendered below sea level, even if there is no sea
  • Fixes issue in bridge annotation where bridges should be ignored when the route itself is below sea level
  • Fixes issue in bridge annotation where the route crop offset was ignored, putting bridges in completely incorrect places
  • Fixes an infinite while loop bug in the rider loading code, which would often trigger after hotloading the dev server
  • Adds a top-level error page to prevent unstyled 404
  • Adds key to the route tile listing so that "clicked" state does not persist through page changes

January 2024

  • Site optimizations
  • First pass at Zwift Click integration
  • Fixed bot spawning issues
  • The system remembers the last active in-ride Menu tab
  • Workouts - added persistance across browser refreshes
  • Workouts - added viz chart with tooltips
  • Improved - more consistent time formatting
  • Improved - better route validation
  • Fixed ERG mode for iOS
  • Improvements to Athletica.ai integration
  • Portals! Point-to-point routes now automatically loop!
  • Fixed accuracy issue with "Climb remaining" stat
  • Refactored to use native crypto
  • Set Featured routes to appear ahead of normal routes
  • Added onboarding text for new users
  • Drafting setting - apply only to Ego and Pacer bots (worldbots always have drafting enabled)
  • Added a pacer "Power Mode" setting to toggle between realistic vs constant power
  • Simplified the ride menu
  • Fix: use default rider design for new users
  • Fix: force cadence reading as an integer
  • Switched to monospace font for /ride stats
  • Improved the FIT parser
  • Minor topnav and layout adjustments
  • Added ZWO parser
  • Added workouts v1
  • Added ability to start a workout using any ZWO file
  • Added Athletica.ai integration for workouts
  • Added workout ERG mode support
  • Added ability to toggle between SIM / ERG for workouts

December 2023

  • Added privacy features
  • Added route publication requests
  • Added /approvals page - users can review "follow" and "club join" requests
  • Split privacy settings into "Profile" and "Activity Details"
  • Added "total_calories" into activity FIT files
  • Changed from 10w to 5w power increments
  • Fixed low cadence pedaling animation
  • More realistic physics & momentum (props Mike)
  • Clear power / cadence / HR data on iOS device dropout
  • Added route moderation (submit routes for publication)
  • Route processing - improved elevation accuracy
  • Route processing - improved bridge auto-detection
  • Route processing - adding basic smoothing
  • Route processing - added warnings when uploaded route contains issues
  • Display route "version" on listing and detail pages
  • Fixed route thumbnail edge-case issue
  • Renamed "Trainer Difficulty" to "Gradient Feel"
  • Avatar cadence now matches sensor input, if present
  • Fixed issue of a map crashing close to the end of the route
  • Handled issues of steep cliffs in the route
  • Slightly improved "save settings" button visibility
  • Rider colours corrected
  • Fixes/improvements to ground and foliage shaders
  • Fixes/improvements to tree rendering
  • Water body experiments with seams yet to be resolved
  • Initial work for supporting different biomes
  • Reworking road map layout
  • Added web-ble connection dropout handling
  • Added self-hosted ground cover tiles
  • Added two-tone fog
  • Set correct sun angle based on latitude
  • Improved sky shader
  • Use route title as the default activity title
  • Use activity title as the "Download FIT File" filename
  • Fixed activity timer issue when saving before the avatar fully stops

November 2023

  • More accurate ground cover
  • Allow all users to upload routes (during the beta period)
  • Work-in-progress: lakes, rivers, other non-ocean water bodies
  • Released the iOS connector app on the App Store ๐ŸŽ‰
  • Fixed Wahoo (WCPS) protocol issues
  • Improved route parsing and distance calculation
  • Added the ocean
  • Added beach/sand texture
  • Improved bridges over water
  • Improved grass textures
  • Moved hosting to Cloudflare
  • Fixed reactivity when navigating between pages
  • Fixed various FE-C over BLE issues
  • Improved route editor's "Closed loop" detection
  • Improved error handling for FTMS timeouts
  • Support HR readings from controllable devices
  • Refactored trees, will be easy to add future variants
  • Improved support for WCPS protocol
  • Added proper login and signup functionality
  • Added password reset
  • Added minimap to route page
  • Added 1-click route reprocessing
  • Automatically trim out minor flaws in uploaded routes
  • Improved rider / peloton motion planning
  • Fixed route editor bugs, added "undo" feature
  • Added basic homepage text and styling