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) 🎄