Releases: dedicatedcode/reitti
v3.0.1
Release v3.0.1 — Hotfix
This is a minor point release addressing two critical regressions discovered shortly after the launch of version 3.0.0.
🔧 Fixes
- Shared Instance Visit Loading (#569): Resolved an issue where shared instances failed to fetch visits correctly.
- Tile Proxy Stability (#574): Fixed a bug where the
TileProxyControllerwould fail if no local tile cache was configured (e.g., whenTILES_CACHEwas set to an empty value). This is now resolved and theTileProxyControlleris bypassed in this constellation.
⚠️ Upgrading from v2.5.0 or earlier?
If you are bypassing v3.0.0 and upgrading directly to this version, please be aware that version 3.0.0 introduced significant breaking changes, including a new tile-cache service in your docker-compose.yml and a new ingestion pipeline architecture.
Please review the v3.0.0 Release Notes thoroughly before proceeding with the update to ensure your configuration is compatible.
Full Changelog: v3.0.0...v3.0.1
v3.0.0
reitti v3.0.0 - Smarter ingestion, battery-friendly tracking, faster maps 🎄
After nearly 4 weeks (our longest gap yet), v3.0.0 is ready. In the meantime, reitti crossed 1,000 stars. Currently sitting at 1,117. I am incredibly thankful for the support and feedback from this community; consider this release my Christmas gift to you. This release focuses on reliability, efficient data handling, and a smoother UI/UX.
Please review the breaking changes before upgrading.
Highlights
- More reliable processing: A rewritten ingestion pipeline processes data in single, time-bounded batches rather than many queue messages. This reduces missed visits, makes behavior more consistent, and simplifies support/debugging around Visits and Paths.
- Battery-friendly tracking: Reitti now interpolates GPS points between sparse samples and will also ignore overly dense points for calculations. You can use energy-saving modes (e.g., Significant Change in OwnTracks) while preserving accurate visits and trips.
- Faster, clearer maps: Multi-year displays got a performance pass, and large numbers of photos are clustered for more responsive map interactions.
- Practical quality-of-life improvements: Adjustable path colors per user, live log viewing and on-the-fly log level changes for admins, better mobile gestures (date picker), clearer timeline background, and more.
Breaking changes
- New
tile-cacheservice (OpenStreetMap tile caching)
- To be a good citizen with open data and speed up your maps, reitti now caches OpenStreetMap tiles by default using a small nginx proxy.
- Does this affect you?
- Using a custom tileserver? No action required.
- First-time install? Already configured in the default setup.
- Existing Docker install? Add the following service to your
docker-compose.ymland make reitti depend on it.
tile-cache: image: nginx:alpine environment: NGINX_CACHE_SIZE: 1g command: | sh -c " mkdir -p /var/cache/nginx/tiles cat > /etc/nginx/nginx.conf << 'EOF' events { worker_connections 1024; } http { proxy_cache_path /var/cache/nginx/tiles levels=1:2 keys_zone=tiles:10m max_size=1g inactive=30d use_temp_path=off; server { listen 80; location / { proxy_pass https://tile.openstreetmap.org/; proxy_set_header Host tile.openstreetmap.org; proxy_set_header User-Agent "Reitti/1.0"; proxy_cache tiles; proxy_cache_valid 200 30d; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; } } } EOF nginx -g 'daemon off;'" restart: unless-stopped healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1/0/0/0.png"] interval: 30s timeout: 10s retries: 3In the reitti service, add under depends_on:
tile-cache: condition: service_healthy- Opt out: Set the
TILES_CACHEenvironment variable to an empty value to disable the cache and keep previous behavior.
- Changed data handling (interpolation)
- Reitti now interpolates GPS points for all incoming data based on time and distance thresholds (previously only for Google Timeline imports).
- This may change how Visits and Trips are computed (e.g., fewer gaps, more stable stay detection).
- A new
VisitSensitivityconfiguration is automatically created on the day of the update. Please review and adjust it to your needs after upgrading.
Recommendation: Make a backup before upgrading. This has been running for several days on my machines, but caution is always wise.
What’s new
Ingestion and data handling
- Single-pipeline ingestion: Timeframe-based processing replaces multi-queue message processing for improved reliability and maintainability.
- GPS interpolation for sparse or dense streams (feature request #489): Interpolates points when samples are close in time and distance; ignores overly frequent points for calculations. Enables accurate results with energy-saving tracking modes.
Maps and media
- Multi-year map display optimized (#535): Significantly improved performance when visualizing long histories.
- Photo clustering: Large numbers of photos are now clustered on the map for better performance and usability.
Customization and admin tools
-
Change path color per user (#501/#516): Customize your path color in
Settings > User Management > Your Profile. Presets included; custom color supported.
-
Logging section for admins (#550): Adjust log level at runtime and view live logs in the UI (no CLI required).
-
Redis DB selection (#503/#504): Use the
REDIS_DATABASEenvironment variable to point reitti at a specific Redis database index.
UI/UX improvements
-
General rendering performance improvements and cleaner look across mobile and desktop.
-
Geocoding actions now show spinners and have improved padding (#491/#555).
-
Fallback avatar alignment corrected (#543/#553).
Tools
-
Local GPX Test Data Tool (#531/#530): Open GPX files, add/remove points, and draw paths with stops using your mouse. Runs 100% locally. Find it at
docs/tools/index.html. If there’s interest, I can deploy it publicly.
Internationalization
- New languages: Simplified Chinese (zh_CN) by @LinFei83 (#507) and Polish by @tomekrzymyszkiewicz (#538).
- Multiple translation updates via Hosted Weblate (#493, #512, #525, #538).
Other changes and fixes
- Missed visits improvements and fixes (#523/#545, #551/#552).
- Wait-and-batch processing for incoming points (#489/#511).
- Combined additions and fixes (#513).
- Adjust export to ignore certain points (#514).
- Make labels translatable (#500/#515).
- Timeline showing trips a day ahead fixed (#506/#518).
- New screenshots for docs (#530/#521).
- Stay detection queue stats added (#526/#527).
- Test processing pipeline (#534).
- Migration for new
VisitSensitivitysettings (#536/#537). - Rename SQL migration to correct naming (#536/#539).
- Remove redundant bounds extension for latest location (#540/#541).
- Remove redundant
USERdirective fromDockerfile(#523/#546). - Ensure consistent tests and improve reliability (#554).
- Fixed e2e test locale string (#498).
- Update runtime to Java 25 for performance and future-proofing (#559/#560).
- Smaller cleanups and refinements (#561).
New contributors
Full changelog: v2.5.0...v3.0.0
— Daniel Graf (dgraf-gh) 🎄
v2.5.0
Reitti v2.5.0 Release Notes
What's Changed
This release introduces a substantial rework of the date picker component. Our primary goals for this redesign were to:
- Smaller UI: Create a more compact and less intrusive design.
- Day Mode Focus: Optimize the default experience for seamless daily timeline browsing, which is the most common use case.
- Easy Mode Switching: Provide quick and intuitive transitions between day, month, and year views. Just scroll up or down in the date picker to switch between months, years or days
- Fast Range Selection: Enable rapid selection of specific dates, months, or year ranges for efficient data filtering.
The result is a more modern, responsive, and user-friendly date selection experience throughout Reitti.



New Features 🎉
- Reworked Date Picker: The entire date picker component has been reimagined and rebuilt from the ground up (
#315). This brings a snappier, more intuitive interface for navigating your timeline dates. Check out the details in #475 by @dgr-gh. - Airplane Transport Mode: You can now accurately categorize your flights with the new "airplane" transport mode (
#480). This helps provide a more precise overview of your travel history! See the feature details in #484 by @dgr-gh.
Bugfixes 🐛
- Improved Settings Layout: Addressed an aesthetic issue by including padding below settings sections and removing redundant margins, resulting in a cleaner and more consistent UI (
#460). Fix submitted in #461 by @dgr-gh. - Memory Edit Panel Enhancements:
- We've removed an old, redundant image header type that was still present in the edit memories panel, simplifying the interface (
#472). - Crucially, this update includes significant fixes for several timezone-related issues regarding the start and end dates of memories. Your memories should now be displayed accurately, regardless of your current timezone or the timezone in which they were created. Dive into the details in #483 by @dgr-gh.
- We've removed an old, redundant image header type that was still present in the edit memories panel, simplifying the interface (
- Path Segments Overlay Fix & Performance Boost: A tricky bug surfaced after recent raw geopoint loading improvements a couple of releases ago, causing selected trip paths to be drawn under the base path (
#486). This is now fixed, ensuring your selected path is always clearly visible on top. As a bonus, we've achieved a significant performance improvement for the entire timeline by optimizing how segment points are rendered, specifically by avoiding unnecessary direct DOM manipulation. See the fix in #487 by @dgr-gh.
Other Changes 🛠️
- Translations Update: Our fantastic community of translators has been hard at work! This release includes the latest translation updates from Hosted Weblate, notably bringing French to 100% completion! Many thanks to everyone involved. #448 by @weblate.
- Enhanced E2E Testing: We've further invested in and expanded our End-to-End (E2E) frontend testing framework (
#218). While not directly visible to users, this ongoing effort significantly improves the overall stability, reliability, and maintainability of Reitti for future developments. #477 by @dgr-gh. - Date Picker End Date Fix: Resolved a specific issue where the end date for date picker selections was not always handled correctly as part of the new component. #485 by @dgr-gh.
- URL Single Date Selection: Fixed handling of single date selections when initiated via the URL, ensuring consistent behavior (
#486- note: this is a different issue than the path segment bug with the same number). #488 by @dgr-gh.
Thanks 🙏
A massive thank you to our incredible community of translators! Your dedication, especially bringing French to 100% translation, is truly appreciated and makes Reitti accessible to more people worldwide. Thank you @skbo @sne11ius @christian-ho
And as always, many thanks to everyone who reported bugs, suggested features, and contributed to Reitti. Your feedback is invaluable!
Full Changelog: v2.4.2...v2.5.0
v2.4.2
Reitti v2.4.2 — Fix: remove OwnTracks ping handling
This hotfix removes handling of OwnTracks “ping” messages to prevent incorrect timestamps from being recorded.
Fix
- Drop OwnTracks ping support (#458 by @dgraf-gh)
Ping messages were being adjusted to use the import time as their timestamp, which is incorrect. Reitti now ignores OwnTracks ping events entirely. Regular OwnTracks location and transition events are unaffected.
Full Changelog: v2.4.1...v2.4.2
v2.4.1
Reitti 2.4.1: Bug Fix and Stability Release
Hi everyone,
I'm releasing a quick follow-up, version 2.4.1, to address a few bugs that were discovered after our recent feature release. This update focuses on improving stability and the user experience.
A Big Thank You to the Community!
I want to give a special shout-out to user SKBo, who took the time to report several small but important UI issues. Thanks to their detailed feedback, I was able to fix them all in a single pass.
- Integration URLs Now Update Correctly: When you have multiple API tokens, selecting a different token on the mobile app integration page will now correctly update the setup URL.
- Corrected Translations: The "Transportation Modes" settings page now properly displays all translated text as intended.
- Conditional Menu Link: The "Manage Data" link in the main navigation will now only appear if the data management feature is actually enabled in your configuration.
All issues above were fixed in PR #455.
Other Bug Fixes
- Fix for Unused API Tokens: I've fixed a bug that caused an error when viewing the list of API tokens if one of them had never been used. The page will now load correctly for all tokens, new or old. (PR #453)
This is a recommended update for all users to ensure a smoother experience. Thanks again for all the bug reports!
Full Changelog: https://github.com/dedicatedcode/reitti/compare/v2.4.0...v2.4.1
v2.4.0
Reitti 2.4.0: One-Click Setup, UI Upgrades, and More!
Hello everyone,
I'm thrilled to release Reitti 2.4.0, which brings some fantastic new features focused on making setup and daily use much easier. My personal highlight in this release is the new one-click configuration for popular tracking apps, a feature inspired directly by community feedback!
🎉 New Features
One-Click App Configuration
A user on Lemmy mentioned how great it would be to have auto-configuration for tracking apps. I was hesitant at first, but after looking into it, I'm happy to say it's now a reality! You can now configure GPSLogger, OwnTracks, and Overland to talk to your Reitti instance with the simple press of a button from the Settings page. This should make getting started easier than ever.
- Implemented in PR #449.
Unified Menu & Magic Link Logout
I've introduced a unified main navigation menu across the app. This brings two key improvements:
- If you've accessed a shared page via a magic link, you'll now have a clear "Logout" option.
- It creates a consistent experience everywhere and significantly improves navigation on mobile devices, especially on pages like Settings.
- Implemented in PR #439.
Sorting Options for Memories
As you create more Memories, keeping them organized becomes more important. You can now sort your Memories list by start date, title, or creation date (ascending or descending) to quickly find what you're looking for.
- Implemented in PR #443.
API Token Selection for App Integration
I've fixed an annoying issue for users with multiple API tokens. Previously, the app integration instructions would always use the most recently created token. Now, if you have more than one token, a dropdown menu will appear, allowing you to select the correct one to generate the setup URL.
- Implemented in PR #444.
Collection of Elevation Data
Looking toward the future, I have a goal to eventually introduce 3D maps. As a first step, Reitti will now begin collecting altitude data as part of the raw location points whenever it's provided by your tracking app.
- Implemented in PR #446.
🛠️ Other Changes & Improvements
- Docs: I've added a direct link to the Overland setup guide in the main
READMEfile for better visibility. (PR #445) - Translations: As always, a huge thanks to the community and @weblate for keeping the translations up to date! (PR #433)
I hope you enjoy these new features that make Reitti easier to set up and use. Thanks for your continued support and feedback!
Full Changelog: https://github.com/dedicatedcode/reitti/compare/v2.3.1...v2.4.0
v2.3.1
Reitti v2.3.1 - Hotfix for date detection via Magic Links
This patch release fixes an issue where the new “current date” logic did not run when accessing Reitti via a Magic Link.
Fixes
- Include
util.jsinindex.html(#436 by @dgraf-gh)
Resolves a user-reported issue where determining the current date failed when using a Magic Link.
Thanks to @sne11ius who reported this issue.
Full Changelog: v2.3.0...v2.3.1
v2.3.0
Reitti v2.3.0 - Overland integration, Places search, and OwnTracks ping support
This release brings a big new integration, a smoother way to find your places, and improved OwnTracks handling.
Highlights
- New: Ingest location data from Overland (iOS) to keep your timeline in sync.
- New: Places search to quickly find and manage past places.
- Improved: Support for OwnTracks ping events for richer, more complete data.
New Features 🎉
-
Overland integration (#432, fixes #429) by @dgraf-gh
Reitti can now ingest data from Overland, an iOS app for location tracking. -
Better places management (#428, fixes #427) by @dgraf-gh
The Places page now includes a search bar to help you quickly find past places. -
OwnTracks ping support (#431, enhancement #425) by @dgraf-gh
Reitti now handles OwnTracks ping events, improving data continuity.
Other Changes
Thanks to everyone who contributed and tested this release!
Full Changelog: v2.2.1...v2.3.0
v2.2.1
Reitti v2.2.1 — Minor UX improvements and timezone fix
This patch release delivers small quality-of-life improvements and a fix to ensure dates respect the local timezone.
What's Changed
- Extend map bounds to the latest location when no segments are returned (#420 by @hashworks)
- Respect local timezone when calculating the current date (#419 by @hashworks)
- Show display name on timeline avatar hover (#418 by @hashworks)
- Add
titleattribute to the timeline user element for better tooltips/accessibility (#424
Thanks to @hashworks for the contributions.
Full Changelog: v2.2.0...v2.2.1
v2.2.0
Reitti 2.2.0: Smarter Places, Better UI, and a Big Thank You!
Hello everyone,
I'm excited to share version 2.2.0, which is packed with quality-of-life improvements that make Reitti smarter, more accurate, and more user-friendly. Many of these changes come directly from your feedback!
🎉 New Features & Major Enhancements
A Thank You to Our Contributors
As Reitti grows, so does the community helping to build it. To recognize everyone who contributes, I've added a new "Contributors" section to the About page. It pulls data directly from GitHub to ensure everyone who helps make Reitti better gets the credit they deserve. It's a small way for me to say thank you for being a part of this journey.
- Implemented in PR #404.
More Accurate Visit Locations
This is a big one for location accuracy. After a great discussion with a user, I've changed how new "Visits" are placed on the map.
- Before: A visit location was placed at the calculated center of a cluster of GPS points. This could sometimes result in the pin being in an inaccurate spot, like in the middle of a street or in a building you never entered.
- Now: The visit location is snapped to the nearest actual data point from your path. This greatly improves accuracy, ensuring that your logged visits are at places you have physically been.
- Implemented in PR #406.
Persistent Place Names
I know how frustrating it can be to spend time renaming "Unnamed Road" to "Mom's House," only to have it wiped out after a data recalculation. That's now a thing of the past! Manual changes you make to a SignificantPlace (like renaming it or changing its category) will now survive a recalculation.
- Implemented in PR #414.
Smarter Home Detection for Memories
Reitti is now more intelligent at detecting your "home" location when generating a Memory, especially if you move or have multiple homes. It will now examine the week before and after your trip to reliably determine your starting and ending points, and it can even handle having different home locations before and after a Memory.
- Implemented in PR #413.
Clearer Recalculation Status
Since clearing and recalculating data can take time, I've improved the UI feedback. The old advice message for recalculation would sometimes remain visible even after the process had started, causing confusion. I've introduced a proper state system.
- Implemented in PR #410.
🛠️ Other Fixes & Improvements
- Timezone Display: I fixed a bug where times on the API Usage and Data Export pages were not correctly displayed in your local timezone. They will now respect your user settings. (PR #403)
- Avatar Display: The small fallback avatar (for users who haven't set a profile picture) was not rendering correctly. This has been fixed. (PR #400)
As always, I recommend updating to get the latest features and a smoother experience. Thank you for your continued support!
Full Changelog: https://github.com/dedicatedcode/reitti/compare/v2.1.0...v2.2.0





