github dedicatedcode/reitti v2.0.0

23 hours ago

Reitti 2.0.0: Introducing Memories

Hello everyone,

I am incredibly excited to announce the release of Reitti 2.0. This is a major update that brings a feature I've been envisioning for a long time: Memories.

The Vision for Memories

Until now, Reitti has been excellent at its primary job: accurately collecting and visualizing your location data. It shows you the raw tracks, the significant places, and the trips between them. It answers the what and the where.

But raw data lacks a story. My vision for Reitti has always been to go beyond just points on a map and help you create a rich, personal archive of your life's experiences. Memories is the first major step in that direction. It's designed to transform your geospatial data into a human-centric narrative. It's about taking the raw log of a trip and adding the context, the emotion, and the story that makes it meaningful—creating something you'd actually want to share with friends and family, or look back on years from now to remember not just where you went, but how it felt.

⚠️ Breaking Change: Persistent Volume Required

To make Memories possible, we need a place to store uploaded images. This requires a small but mandatory change to your docker-compose.yml file. Reitti now needs a persistent volume to store these files.

Please add the following volumes section to the reitti service in your compose file:

volumes:
  - ./reitti-data:/data/

You can replace ./reitti-data with any host path or named Docker volume you prefer. Your uploaded images will be lost after a restart without this change.

🎉 New Features

Memories (Beta)

This is the flagship feature of 2.0. It transforms your raw location data into a sharable, editable travel log.

Automatic Generation

Select a date range, and Reitti generates a base memory for you. It intelligently pulls in your tracked data, integrates photos from your connected services, and even adds introductory text to get you started.

Transforms this:
image

into:

image

A Building-Block Editor

From there, you can fully customize your story. Add dedicated text blocks, highlight specific visits or trips from your timeline, and build beautiful image galleries.

image

Collaboration & Sharing

Magic links are back, but for Memories. You can generate a link to share a read-only version of your memory, or even grant write access to let someone collaborate with you on it.

image

A Note on "Beta"

This is a complex feature. While I've tested it extensively, its performance and stability can vary depending on the shape of your data. Consider it a beta release. Please be active in reporting any bugs or unexpected behavior you encounter.

  • Implemented in PR #351.

Editable Transportation Modes

You now have much more control over how Reitti identifies your trips.

  • You can now customize the speed thresholds for each transportation mode in Settings > Transportation Modes.
  • I've added new modes, including motorcycle and train.
  • You can now manually override the detected transportation mode for any trip directly in the timeline view.
  • The detection algorithm itself is now more robust, better filtering out noise from sudden speed changes (like stopping at a red light while biking) for more precise detection.
  • Implemented in PR #352.
image

UI Toggles for Mobile

To improve the experience on smaller screens, you can now collapse the timeline and date picker to maximize map space.

  • Implemented in PR #360.
image

🐛 Technical Bug Fixes

  • GeoJSON Import Timestamp Handling: I fixed an issue where points from a Dawarich GeoJSON export wouldn't appear on the data export page.

    • Technical Cause: The importer was strictly expecting an ISO 8601 timestamp string. Dawarich exports use a Unix epoch timestamp (seconds since 1970-01-01). The parser failed to convert this, so the points were effectively ignored.
    • Fix: The parser is now more flexible and will detect and correctly convert Unix timestamps, ensuring the data is processed correctly. (PR #371)
  • Visit Sensitivity Recalculation Logic: Changing the "visit sensitivity" setting was not correctly recalculating places.

    • Technical Cause: To save on reverse-geocoding API calls and improve performance, Reitti was caching and reusing SignificantPlace entities. However, the cache invalidation logic was flawed; it did not trigger a flush when the sensitivity setting was changed.
    • Fix: I've corrected this by ensuring that when the sensitivity setting is updated, all existing SignificantPlace entities are deleted. This forces a full recalculation against the new settings, ensuring your changes are correctly applied. (PR #359)
  • Segmented Data Path Preview: The preview function for raw location data was failing to display complete paths.

    • Technical Cause: For performance, rawLocationPoints are returned in segments. The preview function was only written to query the old version of data, and failed in handling the segmented data. This resulted in an empty path on the preview map.
    • Fix: The function has been updated to correctly query and stitch together all relevant data segments, now rendering the full, correct path as expected. (PR #358)

Other Contributions

  • A huge thank you to @hashworks for making their first contribution by fixing dead documentation links (PR #346)!
  • And as always, thanks to all the tranlators via @weblate for their tireless work keeping the project accessible (PR #327).

Full Changelog: https://github.com/dedicatedcode/reitti/compare/v1.9.3...v2.0.0

Don't miss a new reitti release

NewReleases is sending notifications on new releases.