The Insights, Transportation Mode Detection and Supporter Verification release
Quiet a few big things in this release! It starterted with the idea of adding the Insights page. I experimented with it a bit to see what kinds charts and visualizations we can already have based on the existing data. There were some, but one of the most exciting to me would be the ability to see the Activity Breakdown: now many hours I spent walking, driving and running. Spoiler: I didn't run that much last year :) Anyway, to get that, we needed to have transportation mode detection for tracks. So naturally I went ahead and implemented that as well. Now, not only we can see the activity breakdown, but also, on the Map V2, if you click on a track (Tracks layer should enabled), you will see the transportation modes for it. That's what I wanted for Dawarich for a long time, and I'm happy it's finally here! In the map settings panel, there is now Transportation Mode Detection section, where you can configure speed thresholds for each mode. By default, they are set to reasonable values, but you can tweak them as you wish. Changing the thresholds will recalculate modes for all tracks in the background, which may take a while depending on how many tracks you have.
Another thing introduced in this release, is support verification. Almost 150 people have supported us financially on Ko-fi, Patreon and GitHub Sponsors, and if you're one of them, on the Settings page you can now enter your email and verify your support. Verified supporters will get a special (disableable) badge in the navbar as a token of our appreciation. Thank you so much for supporting Dawarich!
Anyway, enjoy the release and don't forget to report any bugs you may find!
Added
- App-level DNS cache with 5 minutes TTL to reduce DNS lookups and improve performance. #2183
- New Insights page with comprehensive analytics and visualizations:
- Activity heatmap: GitHub-style contribution graph showing daily activity throughout the year
- Activity streak: Track your current streak and longest streak of consecutive active days
- Top visited locations: See your most frequently visited places for the selected year
- Year comparison: Compare stats (distance, countries, cities, active days) with previous year
- Activity breakdown: Visualize your activity distribution by transportation mode
- Monthly digest: Detailed monthly statistics with travel patterns
- Travel patterns: Time-of-day and day-of-week activity distribution
- Movement wellness: Health-related insights based on your movement data
- Location clusters: Geographic clustering of your visited locations
- Transportation mode detection for tracks: Tracks are now automatically segmented by transportation mode (walking, cycling, driving, etc.) with configurable speed thresholds in settings. Modes are recalculated when threshold settings change.
- Near real-time track generation: Tracks are now generated within ~45 seconds of receiving new points (via OwnTracks, Overland, or the Points API) using a Redis-based debouncer. This replaces the previous 4-hour polling cycle for most cases. Daily generation job frequency reduced from every 4 hours to every 12 hours as a fallback.
- Track merging: Consecutive tracks that belong to the same journey are automatically merged when the gap between them is within the configured time threshold.
- Email preferences moved to "General" tab in user settings for better organization.
Fixed
- Remove assets before precompilation to prevent stale assets from being served. #2187
- undefined method 'to_sym' for nil in sidekiq #2190
Tracks::BoundaryResolverJobnow uses deterministic exponential backoff instead of random delays, and stops retrying after 5 attempts to avoid infinite rescheduling.- Hanging Sidekiq job #2134
Changed
- Daily track generation job runs every 12 hours instead of every 4 hours, since real-time generation handles most cases.
💙 This release is supported by Steven B., James Manolios, chenrik, aldumil, derpderpington, Chippie, dint, jhalpern, Lex Fradski, Schlufo, cyberswan.at, craftyklaus, Andre, hogenf, naraxius, Embrace, martin4861, Alex, evetters, GregF, Jon Coffee, Lukas, Robbie G, Kilian, Hans G, Chris, tabaha, Andre, Michael C, Chris, gesus, Jonah B., Dante, daallex, Tanner A., Matthias B., Milien M., Mathias, Travis S., Michael J., Matthew F., Johnathan D., bleibdirtroy, no1etal, dixet, Bailey J., Alex D., Benjamin M., Daniel A., Florian, BeeHappy, ChemistryDachshund, OrangeWindies, Roman G., Michelangelo V., Edward, Erazem Z., Denis Abt, Tony G., Andrew D., Lomky, Osamu Y., Simon van B., Linus T., Christian C., Sebastian, Jan K., Nathan T., Max G., Lars N., Karol B., Konstantin, Johannes H., t3hero, g3lin, Tim, Philipp M., Brand K., Pablo F. M., Jon H., fkB, Mikael, Dániel A., Hai_Tsung, ShooTex, GreenTentacle, Kin C., PinkahPandah, David, Ken, ArnyminerZ, Ted C. and Daniel on Patreon and KoFi 💙
What's Changed
Full Changelog: 1.0.1...1.0.2