github dedicatedcode/reitti v5.10.0

one hour ago

Reitti v5.10.0 Release Notes

Hey everyone, Daniel here! 👋

Welcome to Reitti v5.10.0! This release brings a major overhaul to trip and transportation classification, adds device inactivity notifications, improves the live-tracking map focus, and packs a massive collection of bug fixes and performance improvements. A huge shoutout goes to our newest contributor, @sergeich, who went on an absolute tear identifying and fixing edge cases across the codebase.

Here is what is new in this release:


Highlights & New Features

Reimagined Trip Classification (#1369)

image

This overhaul grew out of our Project Thousand Papercuts discussion, and the result is a huge step forward for real-world accuracy:

  • Overlapping Speed Bands: Previously, transportation modes were constrained by hard cutoff speeds that could not overlap. Now, modes support flexible speed bands with distinct minimum and maximum thresholds.
  • Mode Priorities: Because speed bands can now overlap (for example, a fast bike ride versus slow city car traffic), each mode has an assigned priority to help Reitti make the right decision when speeds fall into multiple categories.
  • Confidence Rating: The trip edit dialog now shows how confident Reitti was in its prediction, giving you transparency into why a particular mode was chosen.
image

⚠️ Action Recommended: Reitti will automatically generate speed bands based on your existing configuration. Please head to Settings > Transportation Modes to review and adjust them to your personal habits. To apply these new rules to your historical trips, click the "Reclassify All Trips" button.

Smarter Live Mode Centering (#1380)

Live mode now stays zoomed in and centered on the active user instead of zooming out to fit their entire historical path on screen. This gives you much clearer, immediate context about where someone is right now. You can still easily switch focus to other users by clicking their name in the selector at the bottom.

Device Inactivity Notifications (#1385)

Building on the notification engine introduced in v5.9.0, Reitti can now alert you if a device stops sending location data. You can set an inactivity threshold (e.g., alert if no data is received for X hours) across your configured notification channels. This is especially handy for catching instances where your phone's battery saver killed OwnTracks in the background or a dedicated GPS tracker ran out of battery.

image

Performance & Bug Fixes

Database & Performance

  • Faster Keyset Cursor for Large Exports (#1363): When exporting large time ranges as GPX files, the keyset cursor streaming points now uses row-value comparison in PostgreSQL. This makes long-range GPX and data exports significantly faster. (Thanks @sergeich!)

Data & Timestamps

  • Sub-Minute Timestamp Precision in Map Streams (#1374): When loading map points from the backend, we stream them as packed float32 arrays (for example, [lat, lon, timestamp, ...]). Because Unix timestamps exceed the precision limits of a single-precision 32-bit float, timestamps were silently getting mangled and rounded by roughly ~120 seconds. We have added a v3 location stream with exact epoch-second precision so point timing on the map is accurate down to the second.
  • GeoJSON Import API Response (#1373): Importing GeoJSON files worked fine on the server, but the API response always reported pointsScheduled: null. The response now returns the correct count of scheduled points.

Places & Geocoding

  • Reverse Geocoding Language & Cache Dialog (#1366): The language parameter was being ignored across all reverse geocoding providers. This is now fixed. Additionally, clicking the button to clear geocoding responses and trigger a fresh run now opens a confirmation dialog showing how many places will be affected and the consequences of clearing the cache.
  • Nominatim GeocodeJSON Parsing (#1372): Fixed a long-standing regression where responses from Nominatim were not parsed correctly. Nominatim seems to be less commonly used given that this went unnoticed for a while, but it is fully working again. (Thanks @sergeich!)
  • Place Category Overrides (#1384): When creating a significant place where an override exists, Reitti uses the override name and preserves the category you chose. However, the selected category was being discarded on save, causing places to revert back to OTHER. They now properly keep their assigned category. (Thanks @sergeich!)

User Management & Security

  • Deleting Users with Integrations or Avatars (#1377): When deleting a user, associated records (such as device integrations or avatar images) would block the deletion with a constraint error. Account deletion now cleans up dependent assets cleanly. (Thanks @sergeich!)
  • Admin Self-Demotion Check (#1379): Reitti includes a guard preventing the sole administrator on an instance from demoting themselves to a standard user (avoiding instances without any admins). However, this check was also triggering whenever that admin tried to edit other users, incorrectly blocking the changes. (Thanks @sergeich!)
  • Shared Memory Token Access (#1383): While testing, I noticed that visits and trips were failing to load on shared memory links. During the security hardening in recent releases, an authorization check was missed on the endpoint responsible for fetching visit and trip data inside memories. Shared links now display all memory data as intended.

Map Rendering

  • Terrain Drift in 2D and 3D (#1368): This one felt a bit like Groundhog Day: deck.gl and maplibre-gl were once again disagreeing on which elevation paths should render when terrain is enabled, causing visual drift. Because this issue is tricky to reproduce consistently, both libraries have been updated to their latest versions. An upstream fix in deck.gl to pull terrain directly from MapLibre should resolve this permanently once released; this update brings us as close as possible in the meantime.

Community & Trivia

  • MVP of the Release: A huge thank you again to @sergeich for tracking down and submitting clean fixes for so many edge cases in this cycle. I half-expected another PR to land while writing these release notes! ❤️
  • Local FOSS Trivia: I recently joined a meetup on digital sovereignty hosted by dlc.sh. Aside from meeting other passionate self-hosters, I learned that Vikunja is also built right here in Lübeck! It made my day to discover that another open-source project for self-hosters is being developed just around the corner.

New Contributors

Full Changelog: v5.9.1...v5.10.0


Links & Support

If you want to support Reitti development financially:

Happy tracking!

— Daniel

Don't miss a new reitti release

NewReleases is sending notifications on new releases.