[1.12.0]
Update dawarich to 1.7.0
Full Changelog
Monthly digest emails. On the 2nd of each month users receive an email summarizing the previous month with an ASCII-rendered overview (distance, active days, countries, cities), a weekly pattern bar chart, a daily distance sparkline, top countries and cities by time spent, first-time visits, and a month-over-month trend comparison. Enabled by default; opt out at Settings Email Preferences.
Visible, selectable family invitation URL under each pending invite on the family page, so self-hosted instances without SMTP can still share the link #2438.
User-configurable GPS noise filtering in Map v2 Settings. The accuracy threshold (previously a hardcoded 100 m) is now adjustable from 501000 m, and the filter can be disabled entirely, so trips on trains or other weak-signal data sources no longer get their legitimate points stripped out. A "Re-evaluate past data" button clears existing anomaly flags, re-runs the filter with the new settings, and rebuilds tracks/stats/digests; a separate "Recalculate tracks & stats" button rebuilds derived data without touching anomalies. Fixes #2480.
S3 storage can now be used in self-hosted mode. It's compatible with S3-like backends, such as MinIO, Ceph, or Cloudflare R2. To enable S3 storage, set STORAGE_BACKEND=s3 and provide AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, and AWS_BUCKET. For S3-compatible backends, additionally set AWS_ENDPOINT_URL (or AWS_ENDPOINT).
Fix yearly digest emails not being sent automatically. The scheduling job existed in the codebase but was never wired into config/schedule.yml, so no year-end emails went out. Yearly digests now fire on January 2nd at 06:00 UTC.
Fix visit name being overwritten by the location name when updating a visit via the map popup. The custom name typed into the "Visit Name" field is now preserved; the place name is only used as a default when the user leaves the name blank #1915.
Fix the Map v2 replay slider showing times in the browser's local timezone instead of the timezone configured in Settings. Day buckets and the minute-of-day index are now computed in the user's timezone so the replay scrubber matches the rest of the app #2457.
Fix country name canonicalization on the Stats page producing wrong results (e.g., France showing as "Scarborough Reef") when the countries table has multiple rows sharing the same ISO code #2434.
Fix Stats dashboard charts stuck on "Loading..." for some years due to duplicate Chartkick element IDs when rendered inside cached year partials #2453.
Fix map date-navigation prev/next buttons always shifting by one day; they now shift by the currently selected interval #1736.